У меня есть такой сценарий:
Param(
[String[]] $targetMachines,
[String] $targetMachineListFile,
[String] $group,
[String] $domain,
[String] $user
)
if (-not ($targetMachines))
{
$targetMachines = Get-Content $targetMachineListFile
}
foreach ($targetMachine in $targetMachines)
{
Write-Output "Adding domain user $user@$domain to $targetMachine"
$de = [ADSI]"WinNT://$targetMachine/$group,group"
$de.Add("WinNT://$domain/$user")
Write-Output "Done domain user $user@$domain to $targetMachine"
}
Проблема в том, что когда я добавляю пользователя, он выдает ошибку:
Exception calling "Add" with "1" argument(s): "Access is denied.
"
At C:\Users\jz03qx\source\repos\misc\server-prep\Add-User-To-Remote.ps1:20 char:5
+ $de.Add("WinNT://$domain/$user")
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : CatchFromBaseAdapterMethodInvokeTI
Что не так со сценарием? или что может быть не так с настройкой?
Я предполагаю, что вы неявно используете запрещенный двойной переход аутентификации. При добавлении пользователя в группу на целевой машине целевая машина пытается разрешить пользователя в Active Directory. Однако это требует повторной аутентификации в Active Directory, что запрещено.
Вы можете попробовать создать сеанс на основе CredSSP для целевой машины и выполнить команду в сеансе. Пример (не тестировался):
$credential = get-credential
$session = New-PSSession -ComputerName $targetmachine -Credential $credential -Authentication Credssp
Invoke-Command -Session $session -ScriptBlock {
$de = [ADSI]"WinNT://$using:targetMachine/$using:group,group"
$de.Add("WinNT://$using:domain/$using:user")
}
Видеть https://docs.microsoft.com/en-us/powershell/scripting/setup/ps-remoting-second-hop?view=powershell-5.1 для получения дополнительной информации о двойном прыжке и возможных решениях.
CredSSP должен быть включен явно! На клиенте вы должны запустить:
Enable-WSManCredSSP -Role Client
И на сервере:
Enable-WSManCredSSP –Role Server
Имейте в виду, что CredSSP предоставляет ваши учетные данные (в основном в виде обычного текста) целевой машине. В случае компрометации целевой машины ваши учетные данные также будут скомпрометированы.