Windows PowerShell-Remoting
Mit Windows PowerShell-Remoting, das das WS-Verwaltungsprotokoll verwendet, können Sie jeden Windows PowerShell-Befehl auf einem oder mehreren Remotecomputern ausführen. Damit können Sie dauerhafte Verbindungen herstellen, interaktive 1: 1-Sitzungen starten und Skripts auf mehreren Computern ausführen. Um Windows PowerShell-Remoting verwenden zu können, muss der Remotecomputer für die Remoteverwaltung konfiguriert sein. Nachdem Sie Windows PowerShell-Remoting konfiguriert haben, stehen Ihnen viele Remoting-Strategien zur Verfügung. Der Rest dieses Dokuments listet nur einige davon auf.
Starten Sie eine interaktive Sitzung
Verwenden Sie das Cmdlet Enter-PSSession, um eine interaktive Sitzung mit einem einzelnen Remotecomputer zu starten. Geben Sie beispielsweise Folgendes ein, um eine interaktive Sitzung mit dem Server01-Remotecomputer zu starten:
Enter-PSSession Server01
In der Eingabeaufforderung wird der Name des Computers angezeigt, mit dem Sie verbunden sind. Von da an werden alle Befehle, die Sie an der Eingabeaufforderung eingeben, auf dem Remotecomputer ausgeführt und die Ergebnisse auf dem lokalen Computer angezeigt.
Geben Sie Folgendes ein, um die interaktive Sitzung zu beenden:
Exit-PSSession
Führen Sie einen Remote-Befehl aus
Verwenden Sie das Cmdlet Invoke-Command, um einen Befehl auf einem oder mehreren Remotecomputern auszuführen. Geben Sie beispielsweise Folgendes ein, um den Befehl Get-UICulture auf den Remotecomputern Server01 und Server02 auszuführen:
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
Führen Sie ein Skript aus
Verwenden Sie zum Ausführen eines Skripts auf einem oder mehreren Remotecomputern den Parameter FilePath des Cmdlets Invoke-Command. Das Skript muss auf Ihrem lokalen Computer installiert oder verfügbar sein. Die Ergebnisse werden an Ihren 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
Stellen Sie eine dauerhafte Verbindung her
Wenn Sie eine Reihe verwandter Befehle ausführen möchten, die Daten gemeinsam nutzen, erstellen Sie eine Sitzung auf dem Remotecomputer und verwenden Sie dann das Cmdlet Invoke-Command, um Befehle in der von Ihnen erstellten Sitzung auszuführen. Verwenden Sie zum Erstellen einer Remotesitzung das Cmdlet New-PSSession.
Mit dem folgenden Befehl wird beispielsweise eine Remotesitzung auf dem Computer Server01 und eine weitere Remotesitzung auf dem Computer Server02 erstellt. Es speichert die Sitzungsobjekte in der Variablen $ s.
$s = new-pssession -computername Server01, Server02
Nachdem die Sitzungen eingerichtet wurden, können Sie einen beliebigen Befehl in ihnen ausführen. Und da die Sitzungen persistent sind, können Sie Daten in einem Befehl erfassen und in einem nachfolgenden Befehl verwenden.
Der folgende Befehl führt beispielsweise einen Befehl Get-Hotfix in den Sitzungen in der Variablen $ s aus und speichert die Ergebnisse in der Variablen $ h. Die Variable $ h wird in jeder Sitzung in $ s erstellt, ist jedoch in der lokalen Sitzung nicht vorhanden.
invoke-command -session $s {$h = get-hotfix}
Jetzt können Sie die Daten in der Variablen $ h in nachfolgenden Befehlen wie dem folgenden verwenden. Die Ergebnisse werden auf dem lokalen Computer angezeigt.
invoke-command -session $s {$h | where {$_.installedby -ne "NTAUTHORITY\SYSTEM"} }