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

How to correctly decrypt account credentials and pass them to Add-LocalGroupMember command

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

我已经尝试 运行ning 启用管理权限选项的软件包,跳过凭据编码并在实验室外使用各种方法均未成功,因此我必须请求一个具有足够权限的服务帐户把工作做完。我还尝试了各种识别用户帐户的方法,但是这是唯一一种检索 windows 用户的实际帐户的方法,而不是 PS 会话正在 运行ning 的方法。

$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 时,会显示正确的详细信息。相反,我得到一个错误

Cannot validate argument on parameter 'Member'. The argument is null or empty"

任何指点将不胜感激

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

使用 -ArgumentList 参数将 $user 变量传递给 Scriptblock。

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