Чтобы это работало, вы должны настроить как локальный, так и удаленный компьютеры.
На удаленном сервере выполните следующую команду:
Enable-WSManCredSSP -Role server
Вы узнаете, что все настроено правильно, если вы запустите командлет Get-WSManCredSSP
и получитеследующий вывод:
Аппарат не настроен на разрешение делегирования новых учетных данных.Этот компьютер настроен на получение учетных данных с удаленного клиентского компьютера.
На локальном компьютере из командной строки администратора PowerShell необходимо разрешить делегирование полномочий в PowerShell.Выполните следующую команду:
Enable-WSManCredSSP -Role Client -DelegateComputer <REMOTE_COMPUTER_NAME>
Вы можете включить все серверы, используя * для REMOTE_COMPUTER_NAME
.
. Вы узнаете, что это настроено правильно, когда вы запустите Get-WSManCredSSP и получитеследующий вывод:
Аппарат настроен на разрешение делегирования новых учетных данных следующим целям: wsman / REMOTE_SERVER_NAME
Этот компьютер не настроен для получения учетных данных с удаленного клиентского компьютера.
На локальном компьютере обновите групповую политику, чтобы разрешить делегирование ваших учетных данных удаленному серверу.
- Откройте gpedit.msc и перейдите к Конфигурация компьютера> Административные шаблоны> Система> Делегирование полномочий.
- Дважды щелкните «Разрешить делегирование новых учетных данных с проверкой подлинности сервера только для NTLM».
- Включите настройку и добавьте сервер сборки в список серверов как WSMAN / BuildServerName.(Вы можете включить все серверы, введя WSMAN /*.)
Затем, когда вам нужно выполнить команду на удаленном сервере, вы не можете использовать ни один из * -PSSessionкоманды , потому что CredSSP не может использовать кэшированные учетные данные.Вы должны начать сеанс, используя Invoke-Command
, и использовать CredSSP в качестве значения параметра Authentication, например:
Invoke-Command -ScriptBlock { # remote commands here } `
-ComputerName <REMOTE_COMPUTER_NAME> `
-Authentication CredSSP `
-Credential <USERNAME>