Das lästige „Hop-Problem“ bei PowerShell-Remoting und eine einfache Lösung

Soll ein Befehl, der per PS-Remoting ausgeführt wird, eine Aktion ausführen, die eine Berechtigung erfordert, z.B. der Zugriff auf eine Freigabe, ist eine erneute Authentifizierung erforderlich, da die beim Aufruf von Invoke-Command übergebenen Credentials nicht weitergereicht werden. Leider gibt es keine optimale Lösung für einen solchen „Double Hop“, auch wenn PowerShell-Experte Ashley Mc Glone das Problem in seinem Blog-Eintrag für gelöst erklärt hat:

PowerShell Remoting Kerberos Double Hop Solved Securely

Das Problem ist, dass seine Lösung Windows Server 2012 voraussetzt was auch im Jahr 2016 bei großen Unternehmen und Organisationen noch nicht der Standard ist. Gesucht ist daher eine Lösung, die auch mit Windows Server 2008 R2, Windows 7 und vor allem einer älteren PowerShell-Version funktioniert.

Geht es nur um den Zugriff auf eine Freigabe ist meine Empfehlung, das erforderliche Kennwort als PSCredential-Objekt zu übergeben und die Freigabe mit Hilfe des WshNetwork-Objekts, das Teil des Windows Scripting Host (WSH) und ein fester Bestandteil von Windows ist, anzusprechen und es nicht per Net Use zu probieren.

Das folgende Beispiel ist etwas umfangreicher (ich werde es in naher Zuukunft etwas ausführlicher kommentieren). Es setzt PowerShell 4.0 voraus, da ich die statische New-Methode für das Anlegen des PSCredential-Objekts anstelle von New-Object verwende. Auf dem Remote-Computer genügt dagegen PowerShell Version 2.0. Sein Name, im Beispiel heißt er Starbase1 muss genauso geändert werden wie der Name der Freigabe und der CSV-Datei, die per Import-CSV eingelesen wird, um die Versionsnummern von Programmdateien auf dem Remote-Computer zu überprüfen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.