Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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