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:
get-command | 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