about_Remote

Kurze Beschreibung

Beschreibt, wie Remotebefehle in PowerShell ausgeführt werden.

Lange Beschreibung

Sie können Remotebefehle auf einem einzelnen Computer oder auf mehreren Computern ausführen, indem Sie eine temporäre oder dauerhafte Verbindung verwenden. Sie können auch eine interaktive Sitzung mit einem einzelnen Remotecomputer starten.

In diesem Thema finden Sie eine Reihe von Beispielen zum Ausführen verschiedener Arten von Remotebefehlen. Nachdem Sie diese grundlegenden Befehle ausprobiert haben, lesen Sie die Hilfethemen, die jedes Cmdlet beschreiben, das in diesen Befehlen verwendet wird. Die Themen enthalten die Details und erläutern, wie Sie die Befehle ändern können, um Ihren Anforderungen gerecht zu werden.

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

SO STARTEN SIE EINE INTERAKTIVE SITZUNG (ENTER-PSSESSION)

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 Befehle, die Sie eingeben, auf dem Remotecomputer ausgeführt, genau so, als ob Sie sie direkt auf dem Remotecomputer eingegeben haben. Sie können eine Verbindung mit nur einem Computer in jeder interaktiven Sitzung herstellen.

Verwenden Sie zum Starten einer interaktiven Sitzung das Cmdlet Enter-PSSession. Der folgende Befehl startet eine interaktive Sitzung mit dem Server01-Computer:

Enter-PSSession Server01

Die Eingabeaufforderung ändert sich, um anzugeben, dass Sie mit dem Server01-Computer verbunden sind.

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 ZUM ABRUFEN VON REMOTEDATEN

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 die Systemanforderungen für das Remoting nicht 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

Der folgende Befehl ruft beispielsweise die Dienste auf dem Server01-Remotecomputer ab:

Get-Service -ComputerName Server01

In der Regel 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

Wenn Sie andere Befehle auf Remotecomputern ausführen möchten, verwenden Sie das Cmdlet Invoke-Command.

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 Server01-Computer aus.

Invoke-Command -ComputerName Server01 -ScriptBlock {Get-Culture}

Der ComputerName-Parameter ist für Situationen konzipiert, in denen Sie einen einzelnen Befehl oder mehrere nicht verwandte Befehle auf einem oder mehreren Computern ausführen. Um eine dauerhafte Verbindung mit einem Remotecomputer herzustellen, verwenden Sie den Session-Parameter.

SO ERSTELLEN EINER BESTÄNDIGEN VERBINDUNG (PSSESSION)

Wenn Sie den ComputerName-Parameter des Cmdlets Invoke-Command verwenden, stellt Windows PowerShell eine Verbindung nur für den Befehl her. Anschließend wird die Verbindung nach Abschluss des Befehls geschlossen. Alle Variablen oder Funktionen, die im Befehl definiert sind, gehen verloren.

Verwenden Sie das Cmdlet New-PSSession, um eine dauerhafte Verbindung mit einem Remotecomputer zu erstellen. 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 freigeben, z. B. Funktionen, Aliase und die Werte von Variablen. Verwenden Sie zum Ausführen von Befehlen in einer PSSession den Session-Parameter des Cmdlets Invoke-Command.

Der folgende Befehl verwendet beispielsweise das Cmdlet Invoke-Command, 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. Der folgende Befehl zählt die Anzahl der in $p gespeicherten Prozesse.

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 Invoke-Command ein. 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 (.) ein, oder geben Sie "localhost" ein.

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.

Der folgende Befehl führt beispielsweise das skript Sample.ps1 auf den S1- und S2-Computern aus:

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 EINES REMOTEBEFEHLS

Um einen Befehl zu unterbrechen, drücken Sie STRG+C. Die Unterbrechungsanforderung wird an den Remotecomputer übergeben, auf dem der Remotebefehl beendet wird.

WEITERE INFORMATIONEN

SCHLÜSSELWÖRTER

about_Remoting

Siehe auch