Tipps für die Remote-Verwaltung per PowerShell

Wer die PowerShell zur Remote-Verwaltung einsetzt, der sollte einige grundsätzliche Dinge beachten. Ein Überblick.

Es ist toll, mit PowerShell-Remote-Funktionen zu arbeiten, also von lokalen Rechnern aus Befehle auf Remote-Rechnern auszuführen. Das ist definitiv der Weg der Zukunft, um mit der PowerShell zu arbeiten, aber die Technik ist etwas schwierig zu verstehen und einzurichten. In diesem Beitrag geben wir einige Tipps zu diesem Thema.

Nur lokale Ressourcen nutzbar

Stellen Sie zunächst sicher, dass Ihr Befehl nicht versucht, auf lokale Ressourcen des Rechners zuzugreifen, die auf Remote-Rechnern nicht vorhanden sind. Angenommen, auf Computer A ist Windows 7 oder Windows 8/8.1 installiert. Sie verwenden über das Netzwerk einen Befehl auf einem Computer B, der mit Windows Server 2008 oder höher arbeitet. Der Befehl muss in der Lage sein, vollständig auf  Ressourcen des Computer B zuzugreifen, da es standardmäßig nicht möglich ist, das Netzwerk für den Zugriff auf lokale Ressourcen zu verwenden.

Warum ist das so? Einfach ausgedrückt funktioniert das nicht, weil Ihre Anmeldeinformationen zu Computer B delegiert werden. Es ist aber Computer B aus Gründen der Sicherheit nicht erlaubt, die Anmeldeinformationen weiter zu delegieren.

Wenn Sie diese Weiterdelegierung aber unbedingt nutzen wollen, können Sie die Multi-Hop-Delegation verwenden, indem Sie ein Protokoll namens CredSSP aktivieren. Hier gibt es aber eine Reihe von Sicherheitsbedenken mit dieser Technologie. Daher sollten Sie sicherstellen, dass Sie diese Problematiken verstehen, bevor Sie fortfahren. Weitere Informationen hierzu finden im kostenlosen E-book Secrets of PowerShell Remoting. In diesem Buch finden Sie einen ganzen Abschnitt zum Thema CredSSP.

Beachten Sie das korrekte Timing

Ein weiteres mögliches Problem mit Befehlen über das Netzwerk liegt im Timing. Wenn Sie einen Befehl lokal ausführen, indem Sie den Befehl manuell eingeben und auf Eingabe drücken, braucht es einige Zeit zu tippen und  Enter zu drücken, sowie die Anzeige des Ergebnisses zu erhalten. Bis Sie die Eingabe des nächsten Befehls beginnen, sollte der erste Befehl also vollständig abgeschlossen sein.

Dies ist nicht unbedingt der Fall, wenn Sie einen Stapel von Befehlen an einen Remote-Rechner senden. Diese Stapeldatei, auch Batch genannt, könnte den ersten Befehl ausführen und dann den zweiten Befehl starten, bevor der erste abgeschlossen ist. Dies tritt bei externen Befehlen besonders häufig auf, die separate Prozesse starten oder eigene Threads benötigen.

Um dies zu vermeiden, sollten Sie Enter-PSSession verwenden, um sich mit dem Remote-Rechner zu verbinden. Danach können Sie alle gewünschten Befehle und CMDlets eingeben und auch das Netzwerk verwenden. Jetzt sollte also auch das Senden über das Netzwerk keine Probleme mehr bereiten. Wenn das funktioniert, arbeiten Sie in einer Batch-Datei entweder mit Invoke-Command. Funktioniert das nicht, haben Sie ein Zeitproblem im Netzwerk. In diesem Fall müssen Sie überprüfen, warum sich die Befehle im Skript oder der Batch-Datei überschneiden und nicht nacheinander starten.

Um Timing-Probleme zu beheben gibt es ein paar generelle Möglichkeiten. Sie können zum Beispiel Start-Sleep-Befehle verwenden, damit die PowerShell eine Pause macht, bis ein Befehl abgeschlossen ist. Sie können auch nach Voraussetzungen suchen, wie z.B. der Existenz einer Datei, bevor Sie mit einem anderen Befehl fortfahren. Auf diesem Weg können Sie die PowerShell für einen Moment pausieren lassen und eine erneute Überprüfung starten, bevor Sie fortfahren.

Auch externe Befehle können Probleme verursachen

Eine andere Möglichkeit bei Problemen mit Remote-PowerShell-Sitzungen betrifft nur externe Befehle, also nicht native PowerShell-Cmdlets in Windows. Oft passiert es hier, dass die Remote-Maschine Ihren Befehl in der PowerShell falsch interpretiert, vor allem externe Befehle, die mit zwei Bindestrichen ("--") arbeiten. Die Shell wird in diesem Fall nicht einmal versuchen, den Befehl zu analysieren, sondern diesen weiterleiten, zum Beispiel zur cmd.exe. Dies löst oft Probleme mit externer Befehlssyntax, allerdings nicht immer.

Die Remoting-Regeln

Wenn Sie in der Lage sind, einen Befehl erfolgreich auszuführen, indem Sie sich direkt in der Konsole des Remote-Rechners über eine Remotedesktopverbindung verbinden oder direkt mit der Konsole direkt am Server, aber der Befehl nicht über Powershell-Remoting funktioniert, dann können Sie auf ein Problem mit der Umgebung gestoßen sein.

Wenn Sie Remote eine Maschine steuern, indem Sie Invoke-Command, Enter-PSSession oder einen anderen Mechanismus verwenden, erhalten Sie keine vollständige interaktive Desktop-Sitzung wie bei der Verbindung auf der Konsole oder einer Remote-Desktop-Sitzung. Die PowerShell kann keine Profil-Skripte ausführen und auch nicht über eine vollständige Benutzerumgebung arbeiten. Ich bin noch nicht oft auf Befehle gestoßen, die aus diesem Grund gescheitert sind, aber es gibt wahrscheinlich ein paar, vor allem wenn es um Module von Microsofts Server-Produkten geht.

Wenn dies Ihr Problem ist, dann können Sie versuchen es zu umgehen, indem Sie den Befehl lokal ausführen lassen. Dazu verwenden Sie die Aufgabenplanung in Windows, um den Befehl zeitgesteuert zu starten. Da die Windows-Aufgabenplanung ein vollwertiges Benutzerkonto verwendet, lassen sich solche Befehle normalerweise problemlos ausführen. Dies garantiert zwar keinen Erfolg, aber es ist einen Versuch wert.

Wenn auch das nicht funktioniert, dann können Sie einen anderen Weg wählen um die Aufgabe mit der PowerShell zu lösen. Suchen Sie sich in diesem Fall ein alternatives CMDlet. Wenn Ihr Befehl eine vollständige, interaktive Desktop-Umgebung benötigt, dann werden Sie sich unter Umständen doch auch direkt lokal am Rechner anmelden müssen um das Skript zu starten.  

Folgen Sie SearchDataCenter.de auch auf Facebook, Twitter und Google+!

Artikel wurde zuletzt im Dezember 2012 aktualisiert

Erfahren Sie mehr über Windows-Server

Diskussion starten

Schicken Sie mir eine Nachricht bei Kommentaren anderer Mitglieder.

Bitte erstellen Sie einen Usernamen, um einen Kommentar abzugeben.

- GOOGLE-ANZEIGEN

SearchSecurity.de

SearchStorage.de

SearchNetworking.de

SearchEnterpriseSoftware.de

Close