PowerShell für die Remoteverwaltung von Windows 7/8.1 nutzen

Windows-PCs können auch aus der Ferne per PowerShell verwaltet werden. So richten Sie die Remoteverwaltung für Windows 7/8.1 ein.

PowerShell-Skripte und einzelne Cmdlets in der PowerShell sind oft recht einfach aufgebaut. Auch das Ausführen von Aktionen auf Rechnern im Netzwerk ist in der PowerShell für viele Cmdlets möglich. Allerdings gibt es durchaus Fallstricke bei der Ausführung und Probleme, wenn Cmdlets nicht ausgeführt werden können. 

Windows 7 verwendet die PowerShell 3.0, in Windows 8.1 ist bereits die PowerShell 4.0 installiert und mit Windows 10 und Windows Server 10 wird die PowerShell in Version 5 kommen. Das Gute an der PowerShell ist jedoch die Möglichkeit, neue Versionen auch auf älteren Systemen zu nutzen, beispielsweise also die aktuelle Version 4 für Windows 7. Diese können Administratoren einfach herunterladen und auf Rechnern mit Windows 7/Windows Server 2012 installieren.

Die PowerShell 4 gehört zum Windows Management Framework 4.0, das Microsoft kostenlos zur Verfügung stellt. Der Umgang mit der neuen Version entspricht der alten Version. Die PowerShell 4 bietet allerdings einige neue Funktionen, zum Beispiel bessere Offline-Hilfe und die Möglichkeit, per Desired State Configuration (DSC) bestimmte Einstellungen auf Rechnern über die PowerShell zu automatisieren. 

In diesem Artikel widmen wir uns aber nicht diesen Neuerungen der PowerShell 4.0, sondern der Möglichkeit, Cmdlets über das Netzwerk zu verwenden.

Erst mit aktivierter WinRM gelingt die PowerShell-Nutzung im Netzwerk

Damit ein Rechner PowerShell-Befehle aus dem Netzwerk entgegennimmt, müssen erst entsprechende Ausnahmen in der Firewall aktiviert und Systemanpassungen vorgenommen werden. Natürlich kann nicht jeder Benutzer auf Rechnern im Netzwerk Befehle ausführen, dazu sind Administratorrechte notwendig.

Um Powershell-Befehle ausführen zu können, muss auf dem Rechner das Windows Remote Management (WS-Management) aktiviert sein. Dabei handelt es sich um einen Systemdienst, der standardmäßig nicht gestartet ist. Ob der Dienst läuft, sehen Administratoren in der PowerShell am schnellsten mit folgendem Befehl:

Get-Service WinRM

Wenn der Dienst nicht gestartet ist, dann ist auch sichergestellt, dass der Rechner keine Befehle in der PowerShell über das Netzwerk entgegennimmt. Bevor Rechner über das Netzwerk per PowerShell remote steuerbar sind, muss allerdings einige Vorarbeit erledigt werden.

Windows 7 und Windows 8/8.1 bieten dazu einen automatisierten Weg. Hierfür müssen Administratoren eine Befehlszeile mit erweiterten Rechten öffnen und folgenden Befehl eingeben:

WinRM QuickConfig

Der Befehl kann natürlich auch direkt in der PowerShell eingegeben werden, genauso, wie jeder andere Befehl aus der Befehlszeile. Die Konfiguration muss noch bestätigt werden. Durch eine Überprüfung mit Get-Service WinRM lässt sich die Konfiguration anschließend überprüfen.

Abbildung 1: Die Funktionsfähigkeit der Netzwerkanbindung lässt sich in der PowerShell überprüfen und aktivieren. Dazu sind Administratorrechte notwendig.

Dieser Befehl aktiviert die Firewall-Ausnahmen und den WinRM-Listener, mit dem die PowerShell auf Befehle aus dem Netzwerk wartet. Wie in Abbildung 1 zu sehen ist, werden Administratoren aufgefordert, die Aktion zu bestätigen. Wichtig in diesem Zusammenhang sind auch installierte Antivirenprogramme. 

Viele blockieren vollkommen unabhängig von der PowerShell den Netzwerkzugriff. Wenn eine Netzwerkverbindung über die PowerShell nicht funktioniert, sollten Administratoren kurz den Virenschutz ausschalten und die Verbindung testen. Funktioniert jetzt die Verbindung, kann der Virenschutz wieder gestartet werden. Anschließend müssen Administratoren dann in der Verwaltung des Virenschutzes die Netzwerkverwendung der PowerShell noch aktivieren.

Tipps zur Nutzung der PowerShell über das Netzwerk

Viele Cmdlets in der PowerShell erlauben auch die Ausführung von Konfigurationsarbeiten auf Rechnern im Netzwerk. Dabei hilft die Option -Computername. Um sich alle Cmdlets anzeigen zu lassen, die diese Option unterstützen, hilft der Befehl Get-Help * -Parameter ComputerName.

Abbildung 2: Mit dem Cmdlet Get-Help * -Parameter ComputerName lassen sich alle Netzwerkfähigen Cmdlets in der PowerShell anzeigen.

Wollen Administratoren mit der PowerShell über das Netzwerk arbeiten, ist die grafische Benutzeroberfläche der PowerShell (Integrated Script Engine, ISE) ebenfalls geeignet. Diese starten Administratoren am schnellsten, wenn sie auf einem Computer eine normale PowerShell-Sitzung starten und den Befehl ise eingeben.

Zwischen der Befehlszeile, der PowerShell und der PowerShell ISE können Administratoren darüber hinaus immer sehr schnell wechseln. Der Befehl Cmd startet eine Befehlszeile, powershell startet im gleichen Fenster eine PowerShell-Sitzung und mit ise startet die PowerShell ISE.

Um sich anschließend mit einem Computer im Netzwerk zu verbinden, zum Beispiel mit einer Windows-7/8.1-Workstation, klicken Administratoren in der PowerShell ISE auf Datei und wählen Neue Remote-PowerShell-Registerkarte aus. 

Es erscheint ein Fenster, in dem der Computername und anschließend der Benutzernamen eingegeben werden muss. Im neuen Fenster arbeiten Administratoren danach mit einer lokalen PowerShell-Sitzung auf dem entsprechenden Computer. Hier muss nicht die Option -Computername verwendet werden.

Abbildung 3: In der grafischen Oberfläche der PowerShell können Administratoren eine Verbindung mit einem Remotecomputer aufbauen.

Damit diese Funktion genutzt werden kann, muss auf dem Zielcomputer aber erst die bereits besprochene Remoteverwaltung über die Eingabeaufforderung mit winrm quickconfig gestartet werden.

Damit Sie einen Computer über die PowerShell remote verwalten können, müssen Sie außerdem die Remoteverwaltung auf dem Computer aktivieren. Funktioniert die Verbindung nicht, versuchen Sie auf dem entsprechenden Computer noch den Befehl  Enable-PSRemoting -Force in der PowerShell. 

Der Befehl aktiviert ebenfalls die Ausnahmen in der Windows-Firewall. Mit Disable-PSRemoting -Force können Administratoren die Remoteverwaltung eines Computers über die PowerShell wieder deaktivieren.

Um eine Remotesitzung in der herkömmlichen Oberfläche der PowerShell zu erstellen, verwenden Administratoren das Cmdlet New-PSSession. Mit Enter-PSSession <Computer> wird eine Verbindung auf- und mit Exit-Session wieder abgebaut. Neu ist die Möglichkeit, Sitzungen zu unterbrechen und neu aufzubauen. Bei unterbrochenen Sitzungen laufen die Cmdlets weiter, auch wenn sich Administratoren vom Computer getrennt haben. Dazu werden die neuen Cmdlets Disconnect-PSSession, Connect-PSSession und Receive-PSSession verwendet.

Abbildung 4: In der normalen PowerShell-Oberfläche können Administratoren auch Remotesitzungen auf anderen Computern öffnen.

Die PowerShell verfügt darüber hinaus über einige neue Cmdlets, um Netzwerkeinstellungen eines Computers zu steuern oder abzufragen, zum Beispiel Get-NetIPAddress. Um sich eine Liste aller Cmdlets anzuzeigen, mit denen sich Netzwerkeinstellungen festlegen lassen, hilft der Befehl Get-Command -Noun Net*.

Firewalls können ein Scheitern von WinRM verursachen. Die Firewall muss in der Lage sein, eingehenden und ausgehenden HTTP-Datenverkehr zu akzeptieren und weiterzuleiten, wenn die Firewall nur zwischengeschaltet ist. WinRM QuickConfig trägt Ausnahmen nur in der Windows-Firewall ein, das heißt Administratoren müssen Firewall-Ausnahmen selbst eintragen, wenn eine Drittanbieter-Firewall im Einsatz ist. 

Es ist erwähnenswert, dass WinRM 1.1 und frühere Versionen der PowerShell den TCP -Port 80 verwendet haben. Allerdings verwendet WinRM ab Windows 7 den Port 5985. Sollte die Verbindung nicht funktionieren, kann auch über die Eingabeaufforderung noch den Befehl winrm enumerate winrm/config/listener helfen. 

Ein Listener mit dem Port 5985 muss aktiv und an alle IP-Adressen des Servers gebunden sein. Selbstverständlich darf der Port nicht durch eine Firewall blockiert werden. 

Funktioniert der Zugriff  dann immer noch nicht, können Administratoren auf dem Zielcomputer auch eine Liste von Computern pflegen, die Zugriff auf Remote-PowerShell-Sitzungen haben sollen. Dazu wird der folgende Befehl verwendet:

Winrm set winrm/config/client @{TrustedHosts="<Alle Quellcomputer, durch Komma getrennt>"}

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

Erfahren Sie mehr über Desktop-Management

- GOOGLE-ANZEIGEN

ComputerWeekly.de

Close