THEMA about_Remote KURZBESCHREIBUNG Beschreibt, wie Remotebefehle in Windows PowerShell ausgeführt werden. DETAILBESCHREIBUNG Sie können Remotebefehle auf einem einzelnen Computer oder auf mehreren Computern mit einer temporären oder dauerhaften Verbindung ausführen. Sie können auch eine interaktive Sitzung mit einem einzelnen Remotecomputer starten. Dieses Thema enthält eine Reihe von Beispielen, in denen die Ausführung unterschiedlicher Typen von Remotebefehlen veranschaulicht wird. Lesen Sie nach dem Ausprobieren dieser grundlegenden Befehle die Hilfethemen, in denen die einzelnen Cmdlets beschrieben werden, die in den Befehlen verwendet werden. Die Themen enthalten nähere Informationen und erläutern, wie Befehle geändert werden können, um die Anforderungen zu erfüllen. Hinweise: Um Windows PowerShell-Remoting zu verwenden, müssen lokale Computer und Remotecomputer für Remoting konfiguriert werden. Weitere Informationen finden Sie unter "about_Remote_Requi rements". SO STARTEN SIE EINE INTERAKTIVE SITZUNG (ENTER-PSSESSION) Die einfachste Möglichkeit, Remotebefehle auszuführen, besteht darin, eine interaktive Sitzung mit einem Remotecomputer zu starten. Wenn die Sitzung gestartet wird, werden die eingegebenen Befehle auf dem Remotecomputer ausgeführt, als ob diese direkt auf dem Remotecomputer eingegeben würden. Sie können in jeder interaktiven Sitzung nur eine Verbindung mit einem Computer herstellen. Um eine interaktive Sitzung zu starten, verwenden Sie das Cmdlet "Enter-PSSession." Mit dem folgenden Befehl wird eine interaktive Sitzung mit dem Computer "Server01" gestartet: enter-pssession server01 Die Eingabeaufforderung ändert sich, um anzuzeigen, dass eine Verbindung mit dem Computer "Server01" hergestellt wurde. Server01\PS> Sie können nun Befehle auf dem Computer "Server01" eingeben. Um die interaktive Sitzung zu beenden, geben Sie Folgendes ein: exit-pssession Weitere Informationen finden Sie unter "Enter-PSSession". SO VERWENDEN SIE CMDLETS MIT EINEM COMPUTERNAME-PARAMETER ZUM ABRUFEN VON REMOTEDATEN Einige Cmdlets verfügen über einen ComputerName-Parameter, mit dem Objekte von Remotecomputern abgerufen werden können. Da diese Cmdlets kein auf WS-Management basierendes Windows PowerShell-Remoting verwenden, können Sie den ComputerName- Parameter dieser Cmdlets auf jedem Computer verwenden, auf dem Windows PowerShell ausgeführt wird. Die Computer müssen nicht für Windows PowerShell-Remoting konfiguriert sein und keine Systemanforderungen für Remoting erfüllen. Folgende Cmdlets verfügen über einen ComputerName-Parameter: Clear-EventLog Limit-EventLog Get-Counter New-EventLog Get-EventLog Remove-EventLog Get-HotFix Restart-Computer Get-Process Show-EventLog Get-Service Show-Service Get-WinEvent Stop-Computer Get-WmiObject Write-EventLog Mit dem folgenden Befehl können Sie beispielsweise die Dienste auf dem Remotecomputer "Server01" abrufen: get-service -computername server01 In der Regel verfügen Cmdlets, die Remoting ohne besondere Konfi- guration unterstützen, über den ComputerName-Parameter, aber nicht den Session-Parameter. Diese Cmdlets suchen Sie in der Sitzung mit dem folgenden Befehl: | where { $_.parameters.keys -contains "ComputerName" -and $_.parameters.keys -notcontains "Session"} SO FÜHREN SIE EINEN REMOTEBEFEHL AUS Um andere Befehle auf Remotecomputern auszuführen, verwenden Sie das Cmdlet "Invoke-Command". Geben Sie mit dem ComputerName-Parameter von Invoke-Command die Remotecomputer an, um einen Befehl oder eine Reihe nicht verknüpfter Befehle auszuführen. Geben Sie den Befehl im ScriptBlock-Parameter an. Beispielsweise wird mit dem folgendem Befehl ein Get-Culture-Befehl auf dem Computer "Server01" ausgeführt. invoke-command -computername Server01 -scriptblock {get-culture} Der ComputerName-Parameter ist für die Ausführung einzelner Befehle oder einer Reihe nicht verknüpfter Befehle auf einem oder mehreren Computern vorgesehen. Um eine dauerhafte Verbindung mit einem Remotecomputer herzustellen, verwenden Sie den Session-Parameter. SO ERSTELLEN SIE EINE DAUERHAFTE VERBINDUNG (PSSESSION) Wenn Sie den ComputerName-Parameter des Cmdlet "Invoke-Command" verwenden, stellt Windows PowerShell nur eine Verbindung für den Befehl her. Sobald der Befehl abgeschlossen ist, wird die Verbindung anschließend geschlossen. Alle Variablen oder Funktionen, die im Befehl definiert wurden, werden verworfen. Um eine dauerhafte Verbindung mit einem Remotecomputer zu erstellen, verwenden Sie das Cmdlet "New-PSSession". Der folgende Befehl erstellt beispielsweise PSSessions auf dem Computer "Server01" und auf dem Computer "Server02" und speichert die PSSessions in der Variablen "$s". $s = new-pssession -computername Server01, Server02 SO FÜHREN SIE BEFEHLE IN EINER PSSESSION AUS Mit einer PSSession können Sie eine Reihe von Remotebefehlen ausführen, die gemeinsame Daten verwenden, beispielsweise Funktionen, Aliase und die Werte von Variablen. Um Befehle in einer PSSession auszuführen, verwenden Sie den Session-Parameter des Cmdlet "Invoke-Command". Der folgende Befehl verwendet beispielsweise das Cmdlet "Invoke-Command", um einen Get-Process-Befehl in den PSSessions auf dem Computer "Server01" und auf dem Computer "Server02" auszuführen. Der Befehl speichert die Prozesse in jeder PSSession in einer $p-Variablen. invoke-command -session $s -scriptblock {$p = get-process} Da die PSSession eine dauerhafte Verbindung verwendet, können Sie einen anderen Befehl in der gleichen PSSession ausführen, die die Variable "$p" verwendet. Der folgende Befehl zählt die Anzahl der Prozesse, die in "$p" gespeichert sind. invoke-command -session $s -scriptblock {$p.count} SO FÜHREN SIE EINEN REMOTEBEFEHL AUF MEHREREN COMPUTERN AUS Um einen Remotebefehl auf mehreren Computern auszuführen, geben Sie die Namen aller Computer im Wert des ComputerName-Parameters von Invoke-Command ein. Trennen Sie die Namen mit Kommas. Der folgende Befehl führt beispielsweise auf drei Computern einen Get-Culture-Befehl aus: invoke-command -computername S1, S2, S3 -scriptblock {get-culture} Sie können auch einen Befehl in mehreren PSSessions ausführen. Die folgenden Befehle erstellen PSSessions auf den Computern "Server01", "Server02" und "Server03", und anschließend wird je ein Get-Culture-Befehl in den einzelnen PSSessions ausgeführt. $s = new-pssession -computername S1, S2, S3 invoke-command -session $s -scriptblock {get-culture} Um die Liste der Computer für den lokalen Computer einzuschließen, geben Sie den Namen des lokalen Computers und anschließend einen Punkt (.) ein, oder geben Sie "localhost" ein. invoke-command -computername S1, S2, S3, localhost -scriptblock {get-culture} SO FÜHREN SIE EIN SKRIPT AUF REMOTECOMPUTERN AUS Wenn Sie ein lokales Skript auf einem Remotecomputer ausführen möchten, verwenden Sie den FilePath-Parameter des Cmdlet "Invoke-Command". Mit dem folgenden Befehl wird beispielsweise das Skript "Sample.ps1" auf dem Remotecomputer "S1" und auf dem Remotecomputer "S2" ausgeführt: invoke-command -computername S1, S2 -filepath C:\Test\Sample.ps1 Die Ergebnisse des Skripts werden an den lokalen Computer zurückgegeben. Sie müssen keine Dateien kopieren. SO BEENDEN SIE EINEN REMOTEBEFEHL Drücken Sie STRG+C, um einen Befehl zu unterbrechen. Die Unterbrechungsanforderung wird an den Remotecomputer übergeben, wo der Remotebefehl beendet wird. Weitere Informationen -- Informationen über die Systemanforderungen für Remoting finden Sie unter "about_Remote_Requirements". -- Hilfe zum Formatieren der Remoteausgabe finden Sie unter "about_Remote_Output". -- Informationen über die Remotingfunktionen, die Verwaltung von Remotedaten, besondere Konfigurationen, Sicherheitsaspekte und andere häufig gestellte Fragen finden Sie unter "about_Remote_FAQ". -- Hilfe zur Auflösung von Remotingfehlern finden Sie unter "about_Remote_Troubleshooting". -- Informationen über PSSessions und dauerhafte Verbindungen finden Sie unter "about_PSSessions". -- Informationen über Windows PowerShell-Hintergrundaufträge finden Sie unter "about_Jobs". STICHWÖRTER about_Remoting SIEHE AUCH about_PSSessions about_Remote_Requirements about_Remote_FAQ about_Remote_TroubleShooting Enter-PSSession Invoke-Command New-PSSession