Freigeben über


Über Remote

KURZE BESCHREIBUNG

Beschreibt, wie Remotebefehle in Windows 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.

Dieses Thema enthält eine Reihe von Beispielen, die Ihnen zeigen, wie Sie verschiedene Arten von Remotebefehlen ausführen. Nachdem Sie diese grundlegenden Befehle ausprobiert haben, lesen Sie die Hilfethemen, in denen die einzelnen Cmdlets beschrieben werden, die in diesen Befehlen verwendet werden. In den Themen finden Sie die Details und es wird erläutert, wie Sie die Befehle an Ihre Anforderungen anpassen können.

Hinweis: Um Windows PowerShell-Remoting verwenden zu können, müssen der lokale und der Remotecomputer für Remoting konfiguriert sein. 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 von Ihnen eingegebenen Befehle auf dem Remotecomputer so ausgeführt, als ob Sie sie direkt auf dem Remotecomputer eingegeben hätten. 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. Der folgende Befehl startet eine interaktive Sitzung mit dem Server01-Computer:

Enter-PSSession Server01

Die Eingabeaufforderung ändert sich und gibt an, dass Sie mit dem Computer Server01 verbunden sind.

Server01\PS>

Jetzt können Sie Befehle auf dem Server01-Computer eingeben.

Geben Sie Folgendes ein, um die interaktive Sitzung zu beenden:

Exit-PSSession

Weitere Informationen finden Sie unter Enter-PSSession.

VERWENDEN VON CMDLETS MIT EINEM COMPUTERNAME-PARAMETER ZUM ABRUFEN VON REMOTEDATEN

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

Da diese Cmdlets kein WS-Management-basiertes 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 die Computer müssen die Systemanforderungen für 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

Beispielsweise ruft der folgende Befehl 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 nicht über einen 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'
}

SO FÜHREN SIE EINEN REMOTEBEFEHL AUS

Verwenden Sie das Cmdlet Invoke-Command, um andere Befehle auf Remotecomputern auszuführen.

Wenn Sie einen einzelnen Befehl oder einige nicht verwandte Befehle ausführen möchten, verwenden Sie den ComputerName-Parameter von Invoke-Command, um die Remotecomputer anzugeben. Verwenden Sie den Parameter ScriptBlock, um den Befehl anzugeben.

Mit dem folgenden Befehl wird z. B. ein Get-Culture Befehl auf dem Computer Server01 ausgeführt.

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

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

SO ERSTELLEN SIE EINE PERSISTENTE 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 geschlossen, wenn der Befehl abgeschlossen ist. Alle Variablen oder Funktionen, die im Befehl definiert sind, gehen verloren.

Um eine dauerhafte Verbindung mit einem Remotecomputer zu erstellen, verwenden Sie das Cmdlet New-PSSession. Mit dem folgenden Befehl werden z. B. PSSessions auf den Computern Server01 und Server02 erstellt und dann in der Variablen $s gespeichert.

$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 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.

Im folgenden Befehl wird z. B. das Cmdlet Invoke-Command verwendet, 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 persistente Verbindung verwendet, können Sie einen anderen Befehl in derselben PSSession ausführen, der die Variable $p verwendet. Der folgende Befehl zählt die Anzahl der Prozesse, die in $p gespeichert wurden.

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

SO FÜHREN SIE EINEN REMOTEBEFEHL AUF MEHREREN COMPUTERN AUS

Wenn Sie einen Remotebefehl auf mehreren Computern ausführen möchten, geben Sie alle Computernamen in den Wert des Parameters ComputerName von Invoke-Command ein. Trennen Sie die Namen durch Kommas.

Mit dem folgenden Befehl wird z. B. ein Get-Culture Befehl auf drei Computern ausgeführt:

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

Sie können auch einen Befehl in mehreren PSSessions ausführen. Mit den folgenden Befehlen werden PSSessions auf den Computern Server01, Server02 und Server03 erstellt, und dann wird in jeder PSSession ein Get-Culture Befehl ausgeführt.

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

Um die Liste der lokalen Computer einzuschließen, 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.

Mit dem folgenden Befehl wird z. B. das Skript Sample.ps1 auf den Computern S1 und 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 STOPPEN SIE EINEN REMOTE-BEFEHL

Um einen Befehl zu unterbrechen, drücken Sie STRG+C. Die Interruptanforderung wird an den Remotecomputer übergeben, wo sie den Remotebefehl beendet.

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, zu speziellen Konfigurationen, zu Sicherheitsproblemen und zu anderen häufig gestellten Fragen finden Sie unter about_Remote_FAQ.

  • 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 Windows PowerShell-Hintergrundaufträgen finden Sie unter about_Jobs.

SCHLÜSSELWÖRTER

about_Remoting

SIEHE AUCH

about_PSSessions

about_Remote_Disconnected_Sessions

Über_Remote_Anforderungen

about_Remote_FAQ

about_Remote_TroubleShooting

Über_Remote_Variablen

Enter-PSSession

Invoke-Befehl

Neu-PSSession