如何正确解密帐户凭据并将其传递给Add-LocalGroupMember命令

时间:2019-04-26 06:26:32

标签: windows powershell account sccm

我正在尝试创建一个脚本,该脚本将当前登录的用户帐户添加到本地管理组,该组将作为SCCM软件包部署到一个特定AD OU组中的新部署的计算机。我已经使用.key种子对服务帐户凭据进行了编码,并将其存储在.txt文件中。不幸的是,我无法将当前用户帐户检索/传递给上述命令。

我尝试在启用了管理权限选项的情况下运行程序包,跳过凭据编码,并在实验室外使用各种方法均未成功,因此为什么我必须请求一个具有足够权限才能完成工作的服务帐户。 Ive还尝试了多种识别用户帐户的方法,但是,这是唯一一种检索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或为空”

任何指针将不胜感激

1 个答案:

答案 0 :(得分:0)

脚本块中的所有内容都在远程计算机上执行。该远程计算机无权访问本地变量“ $ User”

使用-ArgumentList参数将$ user变量传递到脚本块。

Invoke-Command -ComputerName $Computer -ScriptBlock {Add-LocalGroupMember -Group "Administratorer" -Member $args[0]} -ArgumentList $User