2

У меня возникают проблемы с командлетом Invoke-Command. Я зарегистрировался на своем локальном компьютере с моей идентификацией домена, у которой есть права администратора на $server. Если я вручную ввести свои учетные данные, а затем использовать Invoke-Command, я получаю ошибку:Пояснение поведения Invoke-Command

Cannot open Service Control Manager on computer ''. This operation might require other privileges.

# Works 
Get-Service -ComputerName $server-ErrorAction Ignore 

# Doesn't work 
$cred = Get-Credential 
Invoke-Command -ComputerName localhost -ScriptBlock {param($serverIPAddress) Get-Service -ComputerName $server -ErrorAction Ignore} -Credential $cred -ArgumentList $server 

Есть ли что-то особенное о встроенной проверке полномочий, что делает эту работу?

ответ

1

Это классический двухъярусный керберос.

Особая вещь, которая происходит, заключается в том, что на вашем компьютере установлены ваши учетные данные. Он может разговаривать с удаленным компьютером и доказывать, что он имеет учетные данные, даже не отправив их.

Однако, если удаленный компьютер должен получить доступ к чему-либо на третьем компьютере (второй прыжок), он не может доказать, что он имеет учетные данные (потому что это не так), поэтому он не может аутентифицироваться.

Это Kerberos, работающий как разработанный.

Использование Invoke-Command для localhost по-прежнему делает удаленное соединение, поэтому оно по-прежнему считается прыжком. Вызов Get-Service - это второй прыжок.


Рассмотрим:

Invoke-Command -ComputerName $server -ScriptBlock { Get-Service -ErrorAction Ignore } -Credential $cred 

Это будет работать (пока PowerShell Remoting включен на удаленной машине).

В противном случае вам необходимо включить делегирование kerberos или CredSSP или (если возможно, по возможности) переработать все, что вы делаете, чтобы не требовать двойной прыжок.

Be wary of CredSSP (and delegation in general).

+0

Я надеялся, чтобы избежать включения Powershell удаленного доступа, так как я никогда не использовал его раньше и не знаю, смогу ли я продать его ИТ-команды. Спасибо вам за разъяснение! – Vlad274

+1

@ Влад274 считают, что в Windows Server 2012 и выше удаленный доступ к PowerShell включен из коробки. Я считаю, что это сильный аргумент в пользу того, что он может резонировать с другими профессионалами в области ИТ, которые не решаются. – briantist