Informationen zu 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. Die Themen enthalten details und erläutern, wie Sie die Befehle an Ihre Anforderungen anpassen können.
Hinweis: Um Windows PowerShell Remoting zu verwenden, müssen die lokalen Computer und Remotecomputer für Remoting konfiguriert sein. Weitere Informationen finden Sie unter about_Remote_Requirements.
STARTEN EINER INTERAKTIVEN 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 beginnt, 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 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 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 werden, und die Computer müssen die Systemanforderungen für Remoting nicht erfüllen.
Die folgenden Cmdlets verfügen über einen ComputerName-Parameter:
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
Cmdlets, die Remoting ohne spezielle Konfiguration unterstützen, verfügen in der Regel ü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 Cmdlet Invoke-Command, 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 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. Verwenden Sie den Session-Parameter, um eine dauerhafte Verbindung mit einem Remotecomputer herzustellen.
ERSTELLEN EINER PERSISTENTEN VERBINDUNG (PSSESSION)
Wenn Sie den ComputerName-Parameter des Cmdlets Invoke-Command verwenden, stellt Windows PowerShell nur für den Befehl eine Verbindung 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 herzustellen. Der folgende Befehl erstellt z. B. PSSessions auf den Computern Server01 und Server02 und speichert dann die PSSessions in der variablen $s.
$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 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 Variable 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, der die variable $p 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 einen Befehl auch in mehreren PSSessions ausführen. Mit den folgenden Befehlen wird PSSessions auf den Computern Server01, Server02 und Server03 erstellt und anschließend ein Get-Culture-Befehl in jeder PSSessions ausgeführt.
$s = New-PSSession -ComputerName S1, S2, S3
Invoke-Command -Session $s -ScriptBlock {Get-Culture}
Geben Sie zum Einschließen der Liste der Lokalen Computer den Namen des lokalen Computers ein, geben Sie einen Punkt (.) oder "localhost" 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.
Der folgende Befehl führt beispielsweise das skript Sample.ps1 auf den Computern S1 und S2 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.
BEENDEN EINES REMOTEBEFEHLS
Drücken Sie STRG+C, um einen Befehl zu unterbrechen. 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 beim 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 about_Remote_FAQ.
Hilfe zum Beheben von Remotingfehlern finden Sie unter about_Remote_Troubleshooting.
Informationen zu PSSessions und persistenten Verbindungen finden Sie unter about_PSSessions.
Informationen zu Windows PowerShell Hintergrundaufträgen finden Sie unter about_Jobs.
SCHLÜSSELWÖRTER
about_Remoting