Mobile-Menu

Computer und Dienste über das Netzwerk steuern PowerShell Remoting

Von Thomas Joos 4 min Lesedauer

Anbieter zum Thema

Die PowerShell verfügt über zahlreiche Cmdlets, mit denen sich Computer, Dienste und Serveranwendungen über das Netzwerk steuern lassen. PowerShell Remoting ist daher ein wichtiges Einsatzgebiet der PowerShell. Wir zeigen einige Beispiele.

Mit der PowerShell können nicht nur einzelne Computer sondern auch ganze Client- oder Dienstgruppen im Netzwerk gesteuert werden – eine immense Erleichterung für Admins.(Bild:  © Alexander - stock.adobe.com)
Mit der PowerShell können nicht nur einzelne Computer sondern auch ganze Client- oder Dienstgruppen im Netzwerk gesteuert werden – eine immense Erleichterung für Admins.
(Bild: © Alexander - stock.adobe.com)

PowerShell-Cmdlets können nicht nur einzelne Computer lokal oder remote im Netzwerk ansprechen, sondern auch mehrere Endpunkte gleichzeitig. Es ist möglich, hunderte Computer im Netzwerk gemeinsam anzusprechen und zu steuern. Dazu werden die Computer zum Beispiel in einer Variablen gespeichert und danach dem entsprechenden PowerShell-Cmdlet übergeben. Das Cmdlet baut dann eine Verbindung zu jedem Computer im Netzwerk auf und führt den gewünschten Befehl aus.

Für das PowerShell Remoting können verschiedene Techniken zum Einsatz kommen. Eine Möglichkeit ist, die komplette Sitzungen einer PowerShell remote zu öffnen. Dadurch werden alle Befehle in der PowerShell-Sitzung nicht auf dem lokalen Computer, sondern auf dem Remote-Computer ausgeführt.

Bildergalerie
Bildergalerie mit 6 Bildern

Im Windows Admin Center lassen sich im Browser ebenfalls PowerShell-Sitzungen auf Remote-Computern öffnen, auch dabei handelt es sich um eine Remote-Steuerung mit der PowerShell.

Die verschiedenen Remote-Verbindungen der PowerShell

Mit der PowerShell können verschiedene Technologien genutzt werden, um remote Verbindungen aufzubauen. neben WMI stehen auch WS-Management und SSH-Remoting zur Verfügung. Ab PowerShell 7.x lässt sich auch RPC zwischen Windows-Computern nutzen.

Zum Einsatz kommt PowerShell Remoting zum Beispiel, wenn der Parameter „-Computername“ für ein Cmdlet verfügbar ist. Bei Auswahl des Parameters können Admins entweder einen Computernamen angeben, oder eine Variable übergeben, in der mehrere Computernamen gespeichert sind. Wichtige Cmdlets für Admins in diesem Bereich sind:

  • Restart-Computer
  • Test-Connection
  • Clear-EventLog
  • Get-EventLog
  • Get-HotFix
  • Get-Process
  • Get-Service
  • Set-Service
  • Get-WinEvent
  • Get-WmiObject

Mit diesen Cmdlets können Computer über das Netzwerk angesprochen und Anpassungen vorgenommen werden. Einfach ausgedrückt laufen diese Cmdlets lokal und führen bei Anforderung Aufgaben auf dem Remote-Computer aus.

Besonders interessant sind an dieser Stelle die Cmdlets Get-Service, Set-Service und Get-Process, weil sich mit diesen Cmdlets Dienste und Prozesse über das Netzwerk verwalten lassen. Auch Get-Eventlog ist ein wichtiges Cmdlet, weil dadurch auch die Ereignisanzeige über das Netzwerk ausgelesen werden kann. Um sich zum Beispiel alle laufenden Dienste auf einem Remote-Computer anzeigen zu lassen, kann der folgende Befehl genutzt werden:

Get-Service -ComputerName <Computer> | Where-Object {$_.Status -eq "Running"}

Wenn der Parameter für Cmdlets in der PowerShell 7.3.x nicht funktioniert, kann der gleiche Befehl alternativ in der klassischen PowerShell genutzt werden. Der Parameter „-ComputerName“ akzeptiert auch die Eingabe mehrerer Werte, zum Beispiel:

Get-EventLog -LogName System -ComputerName Server01, Server02, Server03

Remotebefehle in der PowerShell ausführen

Parallel zu Cmdlets, die mit dem Parameter „-Computername“ gestartet werden, lassen sich Befehle remote auf einem Computer auch mit dem Cmdlet „Invoke-Command“ ausführen. Dieses Cmdlet ist sinnvoll, wenn das auszuführende Cmdlet den Parameter „-Computername“ nicht unterstützt. Die einzelnen Befehle werden dann im Parameter „-Scriptblock“ angebeben, zum Beispiel mit:

Invoke-Command -ComputerName <Ziel-Computer> -ScriptBlock { <Befehl> } -credential <Benutzername>

Mit Invoke-Command lassen sich nicht nur einzelne Cmdlets remote ausführen, sondern auch komplette Skripte starten. Dazu muss das Skript entweder auf einer Freigabe im Netzwerk oder auf dem lokalen Computer, der das Skript auf den Remote-Computern ausführt, gespeichert sein:

Invoke-Command -ComputerName Server01, Server02 -FilePath c:\Scripts\DiskCollect.ps1

Remote-PowerShell-Sitzungen öffnen

In der PowerShell kann darüber hinaus mit „Enter-PSSession“ eine Remote-Verbindung zu einem Computer geöffnet werden. Alle Befehle, die in dieser Sitzung ausgeführt werden, laufen auf dem Remote-Computer. Die Befehle werden abgebrochen, wenn die Remote-Sitzung beendet wird. Beenden lassen sich Sitzungen mit „Exit-PSSession“.

Sitzungen können aber auch gestartet bleiben. Mit den beiden Cmdlets "Connect-PSSession" und "Disconnect-PSSession" lassen sich bestehende Verbindungen öffnen und schließen. Um eine Remotesitzung aufzubauen, verwenden Sie das Cmdlet "New-PSSession". Es ist an dieser Stelle auch möglich, mehrere Sitzungen aufzubauen und diese in einer Variablen zu speichern, zum Beispiel mit:

$s = New-PSSession -ComputerName Server01, Server02

PowerShell-Cmdlets können die in der Variablen gespeicherten Sitzungen aufbauen und Befehle in den Sitzungen ausführen. Geben diese Befehle Ergebnisse aus, lassen sich auch diese in einer Variablen speichern, zum Beispiel:

Invoke-Command -Session $s {$h = Get-HotFix}

PowerShell Direct mit Hyper-V

Mit PowerShell Direct ist es möglich, auf einem Hyper-V-Host PowerShell-Cmdlets zu nutzen, die der Host innerhalb von VMs ausführt. Dadurch lassen sich auf einem Host verschiedene Aufgaben umfassend für die einzelnen VMs mit der PowerShell steuern. Seit Windows Server 2016 können Administratoren daher von einer PowerShell-Sitzung auf dem Host Verwaltungsaufgaben auf den VMs durchführen. Um eine Sitzung zu starten, wird in der PowerShell-Sitzung auf dem Host einer der folgenden Befehle eingeben:

Jetzt Newsletter abonnieren

Täglich die wichtigsten Infos zu Netzwerktechnik, IP-Kommunikation und UCC

Mit Klick auf „Newsletter abonnieren“ erkläre ich mich mit der Verarbeitung und Nutzung meiner Daten gemäß Einwilligungserklärung (bitte aufklappen für Details) einverstanden und akzeptiere die Nutzungsbedingungen. Weitere Informationen finde ich in unserer Datenschutzerklärung. Die Einwilligungserklärung bezieht sich u. a. auf die Zusendung von redaktionellen Newslettern per E-Mail und auf den Datenabgleich zu Marketingzwecken mit ausgewählten Werbepartnern (z. B. LinkedIn, Google, Meta).

Aufklappen für Details zu Ihrer Einwilligung
Enter-PSSession -VMName <Name der VM im Hyper-V-Manager>Invoke-Command -VMName <Name der VM im Hyper-V-Manager> -ScriptBlock { Commands }

Windows Admin Center und die PowerShell

Nach der Verbindung eines Servers im Windows Admin Center, steht für jeden Computer der Menüpunkt „PowerShell“ zur Verfügung. Hierüber öffnet sich eine Remote-Sitzung auf dem Server, ähnlich wie bei „New-PSSession“ oder „Enter-PSSession“. Nach der Authentifizierung wird jeder Befehl in der Remote-PowerShell-Sitzung auf dem entsprechenden Server ausgeführt. Wenn die Sitzung im Windows Admin Center getrennt wird, löscht sie der Server. Das gilt auch für gespeicherte Variablen und andere Daten.

(ID:49199044)