Freigeben über


Ausführen von Remotebefehlen

Mit einem einzigen PowerShell-Befehl können Sie Befehle auf einem oder Hunderten von Computern ausführen. Windows PowerShell unterstützt remote Computing mithilfe verschiedener Technologien, einschließlich WMI, RPC und WS-Management.

PowerShell unterstützt WMI, WS-Management und SSH-Remoting. In PowerShell 7 und höher wird RPC nur unter Windows unterstützt.

Weitere Informationen zum Remoting in PowerShell finden Sie in den folgenden Artikeln:

Windows PowerShell-Remoting ohne Konfiguration

Viele Windows PowerShell-Cmdlets verfügen über den ComputerName-Parameter , mit dem Sie Daten sammeln und Einstellungen auf einem oder mehreren Remotecomputern ändern können. Diese Cmdlets verwenden unterschiedliche Kommunikationsprotokolle und funktionieren auf allen Windows-Betriebssystemen ohne besondere Konfiguration.

Zu diesem Cmdlets zählen:

In der Regel verfügen Cmdlets, die Remoting ohne spezielle Konfiguration unterstützen, über den Parameter "ComputerName " und nicht über den Parameter "Session" . 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"
}

Windows PowerShell-Remotenutzung

Mit dem WS-Management-Protokoll können Sie mit windows PowerShell-Remoting einen beliebigen Windows PowerShell-Befehl auf einem oder mehreren Remotecomputern ausführen. Sie können dauerhafte Verbindungen herstellen, interaktive Sitzungen starten und Skripts auf Remotecomputern ausführen.

Um Windows PowerShell-Remoting zu verwenden, muss der Remotecomputer für die Remoteverwaltung konfiguriert werden. Weitere Informationen und Anweisungen hierzu finden Sie unter Informationen zu Remoteanforderungen.

Nachdem Sie Windows PowerShell-Remoting konfiguriert haben, stehen Ihnen viele Remotingstrategien zur Verfügung. In diesem Artikel werden nur einige davon aufgeführt. Weitere Informationen finden Sie unter "Informationen zu Remote".

Starten einer interaktiven Sitzung

Verwenden Sie das Enter-PSSession-Cmdlet , um eine interaktive Sitzung mit einem einzelnen Remotecomputer zu starten. Um beispielsweise eine interaktive Sitzung mit dem Remotecomputer Server01 zu starten, geben Sie Folgendes ein:

Enter-PSSession Server01

Die Eingabeaufforderung ändert sich, um den Namen des Remotecomputers anzuzeigen. Alle Befehle, die Sie an der Eingabeaufforderung eingeben, werden auf dem Remotecomputer ausgeführt, und die Ergebnisse werden auf dem lokalen Computer angezeigt.

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

Exit-PSSession

Weitere Informationen zu den Enter-PSSession und Exit-PSSession Cmdlets finden Sie unter:

Ausführen eines Remotebefehls

Verwenden Sie das Cmdlet Invoke-Command , um einen Befehl auf einem oder mehreren Computern auszuführen. Wenn Sie beispielsweise einen Get-UICulture-Befehl auf den Remotecomputern Server01 und Server02 ausführen möchten, geben Sie Folgendes ein:

Invoke-Command -ComputerName Server01, Server02 -ScriptBlock {Get-UICulture}

Das Ausgabeergebnis wird an Ihren Computer zurückgesendet.

LCID    Name     DisplayName               PSComputerName
----    ----     -----------               --------------
1033    en-US    English (United States)   server01.corp.fabrikam.com
1033    en-US    English (United States)   server02.corp.fabrikam.com

Ausführen eines Skripts

Verwenden Sie den FilePath-Parameter des Invoke-Command Cmdlets, um ein Skript auf einem oder mehreren Remotecomputern auszuführen. Das Skript muss auf Ihrem lokalen Computer aktiviert oder zugänglich sein. Die Ergebnisse werden an Ihren lokalen Computer zurückgegeben.

Beispielsweise führt der folgende Befehl das DiskCollect.ps1 Skript auf den Remotecomputern Server01 und Server02 aus.

Invoke-Command -ComputerName Server01, Server02 -FilePath C:\Scripts\DiskCollect.ps1

Herstellen einer beständigen Verbindung

Verwenden Sie das New-PSSession Cmdlet, um eine persistente Sitzung auf einem Remotecomputer zu erstellen. Im folgenden Beispiel werden Remotesitzungen auf Server01 und Server02 erstellt. Die Sitzungsobjekte werden in der $s Variablen gespeichert.

$s = New-PSSession -ComputerName Server01, Server02

Nachdem die Sitzungen nun hergestellt sind, können Sie jeden beliebigen Befehl in diesen ausführen. Und da die Sitzungen permanent sind, können Sie Daten von einem Befehl sammeln und in einem anderen Befehl verwenden.

Beispielsweise führt der folgende Befehl einen Get-HotFix Befehl in den Sitzungen in der $s Variablen aus und speichert die Ergebnisse in der $h Variablen. Die Variable $h wird in jeder der Sitzungen in $s erstellt, ist jedoch in der lokalen Sitzung nicht vorhanden.

Invoke-Command -Session $s {$h = Get-HotFix}

Jetzt können Sie die Daten in der $h Variablen mit anderen Befehlen in derselben Sitzung verwenden. Die Ergebnisse werden auf dem lokalen Computer angezeigt. Beispiel:

Invoke-Command -Session $s {$h | where {$_.InstalledBy -ne "NT AUTHORITY\SYSTEM"}}

Erweitertes Remoting

PowerShell enthält Cmdlets, die Folgendes ermöglichen:

  • Konfigurieren und Erstellen von Remotesitzungen sowohl von der lokalen als auch der Remote-Seite.
  • Erstellen angepasster und eingeschränkter Sitzungen
  • Importieren von Befehlen aus einer Remotesitzung, die tatsächlich automatisch in der Remotesitzung ausgeführt werden.
  • Konfigurieren der Sicherheit einer Remotesitzung

PowerShell unter Windows enthält einen WSMan-Anbieter. Der Anbieter erstellt ein WSMan: Laufwerk, mit dem Sie durch eine Hierarchie der Konfigurationseinstellungen auf dem lokalen Computer und Remotecomputer navigieren können.

Weitere Informationen zum WSMan-Anbieter finden Sie unter WSMan-Anbieter und Informationen zu WS-Management Cmdlets oder geben Sie Get-Help WSMan in der Windows PowerShell-Konsole ein.

Weitere Informationen finden Sie unter:

Hilfe zu Remotingfehlern finden Sie unter about_Remote_Troubleshooting.

Siehe auch