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

问题描述 投票:0回答:1

我正在尝试创建一个脚本,该脚本将当前登录的用户帐户添加到本地管理组,该管理组将作为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或空“

任何指针都将非常感激

windows powershell account sccm
1个回答
0
投票

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

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

Invoke-Command -ComputerName $Computer -ScriptBlock {Add-LocalGroupMember -Group "Administratorer" -Member $args[0]} -ArgumentList $User
© www.soinside.com 2019 - 2024. All rights reserved.