2

Ich habe Probleme mit dem Cmdlet Invoke-Command. Ich bin bei meinem lokalen Computer mit meiner Domänenidentität angemeldet, die über Administratorrechte unter $server verfügt. Wenn ich manuell meine Anmeldeinformationen eingeben, dann verwenden Sie Invoke-Command, erhalte ich die Fehlermeldung:Invoke-Command Verhaltenserklärung

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 

Gibt es etwas Besonderes über die eingebaute in Anmeldeinformationen, die diese Arbeit macht?

Antwort

1

Dies ist der klassische Kerberos-Doppelsprung.

Das Besondere ist, dass der lokale Computer Ihre Anmeldeinformationen hat. Er kann mit einem Remotecomputer sprechen und nachweisen, dass er über die Anmeldeinformationen verfügt, ohne sie jemals zu senden.

Wenn der Remote-Computer jedoch auf etwas auf einem dritten Computer zugreifen muss (zweiter Hop), kann er nicht beweisen, dass er über die Anmeldeinformationen verfügt (weil dies nicht der Fall ist), sodass er nicht authentifizieren kann.

Dies ist Kerberos funktioniert wie vorgesehen.

Mit Invoke-Command zu localhost ist immer noch eine Remoting-Verbindung, so dass es immer noch als ein Hop zählt. Der Anruf Get-Service ist ein zweiter Hop.


Bedenken Sie:

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

das funktionieren wird (solange Powershell-Remoting wird auf dem Remote-Computer aktiviert ist).

Andernfalls müssen Sie die Kerberos-Delegierung oder CredSSP aktivieren oder (am besten, wenn möglich) alles, was Sie tun, um keinen Doppelsprung zu benötigen, nacharbeiten.

Be wary of CredSSP (and delegation in general).

+0

Ich habe gehofft, auf Powershell-Remoting zu vermeiden, drehen, wie ich es noch nie zuvor verwendet habe, und weiß nicht, ob ich es das IT-Team verkaufen. Vielen Dank für die Erklärung! – Vlad274

+1

@ Vlad274 Beachten Sie, dass in Windows Server 2012 und höher, Powershell-Remoting aus der Box aktiviert ist. Ich finde, dass dies ein starkes Argument dafür ist, es zu ermöglichen, was bei anderen IT-Profis, die zögerlich sind, anzuklingen scheint. – briantist