我正在尝试创建一个脚本,该脚本将当前登录的用户帐户添加到本地管理组,该管理组将作为SCCM包部署到一个特定AD OU组中的新部署计算机。我使用.key种子编码了服务帐户凭据,并将它们存储在.txt文件中。不幸的是,我无法检索/传递当前用户帐户到上述命令。
我已经尝试在启用管理权限选项的情况下运行包,跳过凭证编码并使用各种方法在实验室之外没有成功,因此我必须请求一个具有足够权限来完成工作的服务帐户。我还尝试了各种识别用户帐户的方法,但是这是唯一一个检索Windows用户的实际帐户而不是PS会话运行的帐户。
$User = [System.Security.Principal.WindowsIdentity]::GetCurrent().Name
$Computer = $env:COMPUTERNAME $svcAcc = "xxx\xx-xx" $PasswordFile = ".\Password.txt" $KeyFile = ".\AES.key" $key = Get-Content $KeyFile
$Cred = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $svcAcc,(Get-Content $PasswordFile | ConvertTo-SecureString -Key $key)
Invoke-Command -ComputerName $Computer -Credential $Cred -ScriptBlock {Add-LocalGroupMember -Group "Administratorer" -Member $User}
我期望正确传递$User
变量,因为当我运行[System.Security.Principal.WindowsIdentity]::GetCurrent().Name
选择时,会显示正确的详细信息。相反,我得到一个错误
无法验证参数'Member'的参数。参数为null或空“
任何指针都将非常感激
scriptblock中的所有内容都在远程计算机上执行。该远程计算机无法访问本地变量“$ User”
使用-ArgumentList参数将$ user变量传递给Scriptblock。
Invoke-Command -ComputerName $Computer -ScriptBlock {Add-LocalGroupMember -Group "Administratorer" -Member $args[0]} -ArgumentList $User