Mit einem einzelnen Windows PowerShell-Befehl können Sie Befehle auf einem oder auf Hunderten von Computern ausführen. Windows PowerShell unterstützt Remotecomputer mit verschiedenen Technologien, einschließlich der WMI-, RPC- und WS-Verwaltung.
Remoting ohne Konfiguration
Viele Windows PowerShell-Cmdlets verfügen über den ComputerName-Parameter, mit dem Sie Daten erfassen sowie Einstellungen auf einem oder mehreren Remotecomputern ändern können. Dabei wird eine Vielzahl von Kommunikationstechnologien verwendet. Viele können ohne besondere Konfiguration unter allen Windows-Betriebssystemen verwendet werden, die Windows PowerShell unterstützen.
Zu diesen Cmdlets gehören die folgenden:
- Restart-Computer
- Test-Connection
- Clear-EventLog
- Get-EventLog
- Get-HotFix
- Get-Process
- Get-Service
- Set-Service
- Get-HotFix
- Get-WmiObject
In der Regel verfügen Cmdlets, die Remoting ohne besondere Konfiguration unterstützen, über den ComputerName-Parameter, aber nicht den Session-Parameter. Diese Cmdlets suchen Sie in der Sitzung mit dem folgenden Befehl:
get-command | where { $_.parameters.keys -contains "ComputerName" -and $_.parameters.keys -notcontains "Session"}
Windows PowerShell-Remoting
Mit Windows PowerShell-Remoting, für das das WS-Verwaltungsprotokoll verwendet wird, können Sie auf einem oder mehreren Remotecomputern jeden Windows PowerShell-Befehl ausführen. Sie können permanente Verbindungen herstellen, interaktive 1:1-Sitzungen starten und Skripts auf mehreren Computern ausführen.
Für die Verwendung von Windows PowerShell-Remoting muss der Remotecomputer für die Remoteverwaltung konfiguriert sein. Weitere Informationen, u. a. Anweisungen, finden Sie unter about_Remote_Requirements.
Wenn Sie Windows PowerShell-Remoting konfiguriert haben, stehen Ihnen zahlreiche Remotingstrategien zur Verfügung. Im Folgenden sind einige von diesen aufgeführt. Weitere Informationen finden Sie unter about_Remote und about_Remote_FAQ.
Starten interaktiver Sitzungen
Mit dem Cmdlet Enter-PSSession wird eine interaktive Sitzung mit einem einzelnen Remotecomputer gestartet. Wenn Sie zum Beispiel eine interaktive Sitzung mit dem Remotecomputer "Server01" starten möchten, geben Sie Folgendes ein:
enter-pssession Server01
Die Eingabeaufforderung wird so geändert, dass der Name des Computers angezeigt wird, mit dem Sie verbunden sind. Nun werden alle Befehle, die Sie an der Eingabeaufforderung eingeben, auf dem Remotecomputer ausgeführt, und die Ergebnisse werden auf dem lokalen Computer angezeigt.
Um die interaktive Sitzung zu beenden, geben Sie Folgendes ein:
exit-pssession
Weitere Informationen zu den Cmdlets "Enter-PSSession" und "Exit-PSSession" finden Sie unter Enter-PSSession und Exit-PSSession.
Ausführen von Remotebefehlen
Zum Ausführen von Befehlen auf einem oder mehreren Remotecomputern verwenden Sie das Cmdlet Invoke-Command. Wenn Sie zum Beispiel auf den Remotecomputern "Server01" und "Server02" den Befehl Get-UICulture ausführen möchten, geben Sie Folgendes ein:
invoke-command -computername Server01, Server02 {get-UICulture}
Die Ausgabe wird an Ihren Computer zurückgegeben.
LCID Name DisplayName PSComputerName ---- ---- ----------- -------------- 1033 en-US English (United States) server01.corp.fabrikam.com 1033 en-US English (United States) server02.corp.fabrikam.com
Weitere Informationen zum Cmdlet "Invoke-Command" finden Sie unter Invoke-Command.
Ausführen von Skripts
Wenn Sie auf einem oder mehreren Remotecomputern ein Skript ausführen möchten, verwenden Sie den FilePath-Parameter des Cmdlet "Invoke-Command". Das Skript muss aktiviert oder für den lokalen Computer verfügbar sein. Die Ergebnisse werden an den lokalen Computer zurückgegeben.
Mit dem folgenden Befehl wird beispielsweise das Skript "DiskCollect.ps1" auf den Remotecomputern "Server01" und "Server02" ausgeführt.
invoke-command -computername Server01, Server02 -filepath c:\Scripts\DiskCollect.ps1
Weitere Informationen zum Cmdlet "Invoke-Command" finden Sie unter Invoke-Command.
Herstellen permanenter Verbindungen
Wenn Sie eine Reihe aufeinander bezogener Befehle mit teilweise gemeinsamen Daten ausführen möchten, erstellen Sie auf dem Remotecomputer eine Sitzung, und führen Sie dann mit dem Cmdlet "Invoke-Command" in der erstellten Sitzung Befehle aus. Zum Erstellen einer Sitzung verwenden Sie das Cmdlet "New-PSSession".
Mit dem folgenden Befehl erstellen Sie z. B. eine Remotesitzung auf dem Computer "Server01" und eine weitere Remotesitzung auf dem Computer "Server02". Die Sitzungsobjekte werden in der Variablen "$s" gespeichert.
$s = new-pssession -computername Server01, Server02
Die Sitzungen sind eingerichtet, daher können Sie in diesen beliebige Befehle ausführen. Und da es sich um permanente Sitzungen handelt, können Sie Daten in einem Befehl erfassen und in einem nachfolgenden Befehl verwenden.
Mit dem folgenden Befehl wird beispielsweise der Befehl "Get-Hotfix" in den Sitzungen in der Variablen "$s" ausgeführt, und die Ergebnisse werden in der Variablen "$h" gespeichert. Die Variable "$h" wird in jeder Sitzung in $s erstellt, ist in der lokalen Sitzung jedoch nicht vorhanden.
invoke-command -session $s {$h = get-hotfix}
Jetzt können Sie die Daten in der Variablen "$h" in nachfolgenden Befehlen, z. B. dem folgenden, verwenden. Die Ergebnisse werden auf dem lokalen Computer angezeigt.
invoke-command -session $s {$h | where {$_.installedby -ne "NTAUTHORITY\SYSTEM"
Erweitertes Remoting
Dies sind nur die grundlegenden Möglichkeiten, die die Remoteverwaltung von Windows PowerShell bietet. Mit den mit Windows PowerShell installierten Cmdlets können Sie Remotesitzungen auf der lokalen Seite und der Remoteseite einrichten und konfigurieren, angepasste und eingeschränkte Sitzungen erstellen, Benutzern den Import von Befehlen aus einer Remotesitzung ermöglichen, die eigentlich implizit in der Remotesitzung ausgeführt werden, die Sicherheit von Remotesitzungen konfigurieren und vieles mehr.
Zur Erleichterung der Remotekonfiguration enthält Windows PowerShell einen WS-Verwaltungsanbieter. Auf dem vom Anbieter erstellten Laufwerk "WSMAN:" können Sie in einer Hierarchie von Konfigurationseinstellungen auf dem lokalen Computer und auf Remotecomputern navigieren. Weitere Informationen des WS-Verwaltungsanbieters finden Sie unter WSMan Provider und about_WS-Management_Cmdlets, oder geben Sie an der Windows PowerShell-Konsole "get-help wsman" ein.
Weitere Informationen finden Sie unter about_Remote_FAQ, New-PSSessionConfiguration und Import-PSSession. Hilfe zu Remotingfehlern finden Sie unter about_Remote_Troubleshooting.
Siehe auch