Как правильно расшифровать учетные данные учетной записи и передать их команде Add-LocalGroupMember - PullRequest
0 голосов
/ 26 апреля 2019

Я пытаюсь создать сценарий, который добавляет текущую вошедшую в систему учетную запись пользователя в локальную группу администраторов, которая должна быть развернута как пакет 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'.Аргумент нулевой или пустой "

Любые указатели будут с благодарностью приняты

1 Ответ

0 голосов
/ 26 апреля 2019

Все в блоке скрипта выполняется на удаленной машине. Этот удаленный компьютер не имеет доступа к локальной переменной "$ User"

Используйте параметр -ArgumentList для передачи переменной $ user в блок скриптов.

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