Tags: PowerShell, Remote-Verwaltung
Mit PowerShell lassen sich nicht nur Aufgaben auf lokalen Rechnern automatisieren, vielmehr kann man auch Befehle auf Remote-PCs absetzen. Zwar erfordern einige Cmdlets dafür keine Konfiguration der entfernten Rechner, für die volle Funktionalität benötigt man aber WinRM. Dieses lässt sich effizient über GPOs aktivieren.
Möchte man ein Script auf vielen PCs eines Netzwerks ausführen, dann wird man den betreffenden PowerShell-Code bevorzugt in Login-Scripts verpacken. Ist dies nicht erwünscht oder nicht möglich (etwa weil die PCs keiner Domäne angehören), dann lassen sich einzelne Befehle oder ganze Funktionen manuell auf eine Vielzahl von Rechnern anwenden.
Cmdlets mit Remote-Unterstützung
Im Fall von einzelnen Kommandos lässt sich recht einfach herausfinden, ob sie die Ausführung auf einem entfernten System erlauben. Dies ist dann der Fall, wenn sie den Parameter -Computername unterstützen. Dies trifft etwa auf Cmdlets für WMI bzw. CIM zu, so dass auf diesem Weg viele Remote-Operationen möglich sind.
Eine Liste der Cmdlets, die den Parameter -Computername akzeptieren, lässt sich einfach mit dem Befehl
Get-Command | Where {$_.parameters.keys -contains "ComputerName"}
anzeigen. Dabei ist zu beachten, dass PowerShell nur die Cmdlets von geladenen Modulen berücksichtigt.
Session auf Remote-PCs starten
Möchte man eine interaktive Session auf einem Remote-PC öffnen oder dort Cmdlets ausführen, die den Parameter -Computername nicht unterstützen, dann bietet PowerShell auch dafür Mechanismen an. Eine interaktive Kommandozeile lässt sich auf entfernten Systemen mit
Enter-PSSession <Computer-Name>
öffnen, beendet wird sie mit Exit-PSSession. Die PowerShell_ISE enthält zu diesem Zweck im Menü Datei den Befehl Neue Remote-PowerShell-Registerkarte, der ein neues Fenster öffnet und in einem Dialog nach dem Namen des entfernten Rechners und den Anmeldedaten fragt.
Will man nur einzelne Kommandos ausführen, ohne eine interaktive Shell zu öffnen, dann kann man dies mit Invoke-Command tun. Der Aufruf erfolgt in der Form
Invoke-Command -Computername Server-1, Server-2 {Befehle}
Dieses Cmdlet eignet sich auch dafür, Scripts auf Remote-PCs auszuführen. Dafür übergibt man ihm mittels -filepath den Pfad zur Script-Datei, die Befehlssequenz in den geschweiften Klammern entfällt dann.
Täglich Know-how für IT-Pros mit unserem Newsletter
Verwandte Beiträge
- ThinPrint 13 unterstützt Microsofts V4-Druckertreiber und MMC
- PowerShell 7.3: JEA über SSH, Cmdlet für Setup, erweiterte ARM-Unterstützung
- Second-Hop-Problem: CredSSP für PowerShell-Remoting konfigurieren
- Drucker (remote) über PowerShell installieren
- PowerShell für Exchange auf Workstation installieren
Weitere Links