about_Remote
Kurze Beschreibung
Beschreibt, wie Remotebefehle in PowerShell ausgeführt werden.
Lange Beschreibung
Sie können Remotebefehle auf einem einzelnen oder mehreren Remotecomputern ausführen, indem Sie eine temporäre oder permanente Verbindung verwenden. Sie können auch eine interaktive Sitzung mit einem einzelnen Remotecomputer starten.
Hinweis
Um PowerShell-Remoting verwenden zu können, müssen Sie die lokalen und Remotecomputer für Remoting konfigurieren. Weitere Informationen finden Sie unter about_Remote_Requirements.
Starten einer interaktiven Sitzung
Die einfachste Möglichkeit zum Ausführen von Remotebefehlen 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 Sie sie direkt auf dem Remotecomputer eingegeben haben. Sie können in jeder interaktiven Sitzung nur eine Verbindung mit einem Computer herstellen.
Verwenden Sie das Enter-PSSession
Cmdlet, um eine interaktive Sitzung zu starten. Der folgende Befehl startet eine interaktive Sitzung mit dem Server01-Computer:
Enter-PSSession Server01
PowerShell ändert die Eingabeaufforderung so, dass sie den Namen des Remotecomputers enthält.
Server01\PS>
Jetzt können Sie Befehle auf dem Server01-Computer eingeben.
Um die interaktive Sitzung zu beenden, geben Sie Folgendes ein:
Exit-PSSession
Weitere Informationen finden Sie unter Enter-PSSession.
Ausführen eines Remotebefehls
Verwenden Sie das Invoke-Command
Cmdlet, um andere Befehle auf Remotecomputern auszuführen.
Verwenden Sie zum Ausführen eines einzelnen Befehls oder einiger nicht verwandter Befehle den ComputerName-Parameter von Invoke-Command
, um die Remotecomputer anzugeben. Verwenden Sie den ScriptBlock-Parameter , um den Befehl anzugeben.
Der folgende Befehl führt beispielsweise einen Get-Culture
Befehl auf dem Computer Server01 aus.
Invoke-Command -ComputerName Server01 -ScriptBlock {Get-Culture}
Erstellen einer permanenten Verbindung
Wenn Sie den ComputerName-Parameter des Invoke-Command
Cmdlets verwenden, stellt PowerShell eine temporäre Verbindung mit dem Remotecomputer her. Die Verbindung wird geschlossen, wenn der Befehl abgeschlossen ist. In dieser temporären Sitzung definierte Variablen oder Funktionen gehen verloren.
Verwenden Sie das New-PSSession
Cmdlet, um eine dauerhafte Verbindung mit einem Remotecomputer herzustellen. Der folgende Befehl erstellt z. B. PSSessions auf den Computern Server01 und Server02 und speichert dann die PSSessions in der $s
Variablen.
$s = New-PSSession -ComputerName Server01, Server02
Ausführen von Befehlen in einer PSSession
Mit einer PSSession können Sie eine Reihe von Remotebefehlen ausführen, die Daten gemeinsam nutzen, z. B. Funktionen, Aliase und die Werte von Variablen. Verwenden Sie zum Ausführen von Befehlen in einer PSSession den Session-Parameter des Invoke-Command
Cmdlets.
Der folgende Befehl verwendet beispielsweise das Invoke-Command
Cmdlet, um einen Get-Process
Befehl in den PSSessions auf den Computern Server01 und Server02 auszuführen.
Der Befehl speichert die Prozesse in einer $p
Variablen in jeder PSSession.
Invoke-Command -Session $s -ScriptBlock {$p = Get-Process}
Da die PSSession eine permanente Verbindung verwendet, können Sie einen anderen Befehl in derselben PSSession ausführen, die die $p
Variable verwendet. Der folgende Befehl zählt die Anzahl der prozesse, die in $p
gespeichert sind.
Invoke-Command -Session $s -ScriptBlock {$p.count}
Ausführen eines Remotebefehls auf mehreren Computern
Um einen Remotebefehl auf mehreren Computern auszuführen, geben Sie alle Computernamen im Wert des ComputerName-Parameters von ein Invoke-Command
. Trennen Sie die Namen durch Kommas.
Der folgende Befehl führt beispielsweise einen Get-Culture
Befehl auf drei Computern 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 führen dann einen Get-Culture
Befehl in jeder der PSSessions aus.
$s = New-PSSession -ComputerName S1, S2, S3
Invoke-Command -Session $s -ScriptBlock {Get-Culture}
Geben Sie zum Einschließen der Lokalen Computerliste den Namen des lokalen Computers ein, geben Sie einen Punkt () oder einen localhost
Punkt ein.
.
Invoke-Command -ComputerName S1, S2, S3, localhost -ScriptBlock {Get-Culture}
Ausführen eines Skripts auf Remotecomputern
Verwenden Sie zum Ausführen eines lokalen Skripts auf Remotecomputern den FilePath-Parameter von Invoke-Command
. Sie müssen keine Dateien kopieren. Der folgende Befehl führt z. B. das Sample.ps1
Skript auf den Computern S1 und S2 aus:
Invoke-Command -ComputerName S1, S2 -FilePath C:\Test\Sample.ps1
PowerShell gibt die Ergebnisse des Skripts an den lokalen Computer zurück.
Beenden eines Remotebefehls
Drücken Sie STRG+C, um einen Befehl zu unterbrechen. PowerShell übergibt die Interruptanforderung an den Remotecomputer, auf dem der Remotebefehl beendet wird.
Weitere Informationen finden Sie unter
Informationen zu den Systemanforderungen für Remoting finden Sie unter about_Remote_Requirements.
Hilfe zum Formatieren der Remoteausgabe finden Sie unter about_Remote_Output.
Informationen zur Funktionsweise von Remoting, zum Verwalten von Remotedaten, speziellen Konfigurationen, Sicherheitsproblemen und anderen häufig gestellten Fragen finden Sie unter Häufig gestellte Fragen zu PowerShell-Remoting.
Hilfe zum Beheben von Remotingfehlern finden Sie unter about_Remote_Troubleshooting.
Informationen zu PSSessions und persistenten Verbindungen finden Sie unter about_PSSessions.
Informationen zu PowerShell-Hintergrundaufträgen finden Sie unter about_Jobs.