Freigeben über


about_Remote

Kurze Beschreibung

Beschreibt, wie Remotebefehle in PowerShell ausgeführt werden.

Lange Beschreibung

Sie können Remotebefehle auf einem einzelnen oder mehreren Remotecomputern mit einer temporären oder dauerhaften Verbindung ausführen. Sie können auch eine interaktive Sitzung mit einem einzelnen Remotecomputer starten.

Hinweis

Um PowerShell-Remoting zu verwenden, müssen Sie die lokalen und Remotecomputer für Remoting konfigurieren. Weitere Informationen finden Sie unter about_Remote_Requirements.

So starten Sie eine interaktive 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 von Ihnen 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.

Verwenden von Cmdlets mit einem ComputerName-Parameter

Mehrere Cmdlets verfügen über einen ComputerName-Parameter , mit dem Sie Objekte von Remotecomputern abrufen können.

Da diese Cmdlets keine WS-Management-basierte PowerShell-Remoting verwenden, können Sie den ComputerName-Parameter dieser Cmdlets auf jedem Computer verwenden, auf dem PowerShell ausgeführt wird. Die Computer müssen nicht für PowerShell-Remoting konfiguriert werden, und die Computer müssen nicht die Systemanforderungen für Remoting erfüllen.

Die folgenden Cmdlets weisen einen ComputerName-Parameter auf:

Clear-EventLog    Limit-EventLog
Get-Counter       New-EventLog
Get-EventLog      Remove-EventLog
Get-HotFix        Restart-Computer
Get-Process       Show-EventLog
Get-Service       Stop-Computer
Get-WinEvent      Test-Connection
Get-WmiObject     Write-EventLog

Beispielsweise ruft der folgende Befehl die Dienste auf dem Server01-Remotecomputer ab:

Get-Service -ComputerName Server01

Normalerweise verfügen Cmdlets, die Remoting ohne spezielle Konfiguration unterstützen, über einen ComputerName-Parameter und keinen Session-Parameter . Um diese Cmdlets in Ihrer Sitzung zu finden, geben Sie Folgendes ein:

Get-Command | Where-Object {
  $_.Parameters.Keys -contains 'ComputerName' -and
  $_.Parameters.Keys -notcontains 'Session'
}

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-ParameterInvoke-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}

So erstellen Sie eine dauerhafte Verbindung

Wenn Sie den Parameter ComputerName des Invoke-Command Cmdlets verwenden, stellt PowerShell eine temporäre Verbindung mit dem Remotecomputer her. Die Verbindung wird geschlossen, wenn der Befehl abgeschlossen ist. Alle in dieser temporären Sitzung definierten Variablen oder Funktionen gehen verloren.

Verwenden Sie das New-PSSession Cmdlet, um eine dauerhafte Verbindung mit einem Remotecomputer zu erstellen. Beispielsweise erstellt der folgende Befehl 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 freigeben, z. B. Funktionen, Aliase und die Werte von Variablen. Verwenden Sie zum Ausführen von Befehlen in einer PSSession den Parameter "Session " 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 dauerhafte Verbindung verwendet, können Sie einen anderen Befehl in derselben PSSession ausführen, die die $p Variable verwendet. Mit dem folgenden Befehl wird die Anzahl der prozesse gezählt, die in $p.

Invoke-Command -Session $s -ScriptBlock {$p.count}

Ausführen eines Remotebefehls auf mehreren Computern

Wenn Sie einen Remotebefehl auf mehreren Computern ausführen möchten, geben Sie alle Computernamen in den Wert des Parameters ComputerName 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 jedem der PSSessions aus.

$s = New-PSSession -ComputerName S1, S2, S3
Invoke-Command -Session $s -ScriptBlock {Get-Culture}

Geben Sie den Namen des lokalen Computers ein, geben Sie den Namen des lokalen Computers ein, geben Sie einen Punkt (.) oder einen Typ ein localhost.

Invoke-Command -ComputerName S1, S2, S3, localhost -ScriptBlock {Get-Culture}

Ausführen eines Skripts auf Remotecomputern

Um ein lokales Skript auf Remotecomputern auszuführen, verwenden Sie 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.

So beenden Sie einen Remotebefehl

Um einen Befehl zu unterbrechen, drücken Sie STRG+C. PowerShell übergibt die Interruptanforderung an den Remotecomputer, auf dem der Remotebefehl beendet wird.

Weitere Informationen

  • 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 beständigen Verbindungen finden Sie unter about_PSSessions.

  • Informationen zu PowerShell-Hintergrundaufträgen finden Sie unter about_Jobs.

Siehe auch