Freigeben über


about_PSSessions

Kurze Beschreibung

Beschreibt PowerShell-Sitzungen (PSSessions) und erläutert, wie eine dauerhafte Verbindung mit einem Remotecomputer hergestellt wird.

Lange Beschreibung

Zum Ausführen von PowerShell-Befehlen auf einem Remotecomputer können Sie den ComputerName-Parameter eines Cmdlets verwenden oder eine PowerShell-Sitzung (PSSession) erstellen und Befehle in der PSSession ausführen.

Wenn Sie eine PSSession erstellen, stellt PowerShell eine dauerhafte Verbindung mit dem Remotecomputer her. Verwenden Sie eine PSSession, um eine Reihe verwandter Befehle auf einem Remotecomputer auszuführen. Befehle, die in derselben PSSession ausgeführt werden, können Daten freigeben, z. B. die Werte von Variablen, Aliasen und Funktionen.

Sie können auch eine PSSession auf dem lokalen Computer erstellen und Befehle darin ausführen. Eine lokale PSSession verwendet die PowerShell-Remotinginfrastruktur, um die PSSession zu erstellen und zu verwalten.

Ab Windows PowerShell 3.0 sind PSSessions unter Windows unabhängig von den Sitzungen, in denen sie erstellt werden. Aktive PSSessions werden auf dem Remotecomputer (oder auf dem Computer am Remoteende oder auf der Serverseite der Verbindung) verwaltet. Daher können Sie unter Windows die Verbindung von einer PSSession auf einem Windows-Remotecomputer trennen und zu einem späteren Zeitpunkt von demselben Computer oder von einem anderen Windows-Computer erneut verbinden.

In diesem Thema wird erläutert, wie PSSessions erstellt, verwendet, abgerufen und gelöscht werden. Weitere Informationen finden Sie unter about_PSSession_Details.

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

Wenn Sie in Windows Vista und höheren Versionen von Windows eine PSSession auf einem lokalen Computer erstellen möchten, müssen Sie PowerShell mit der Option "Als Administrator ausführen" starten.

Was ist eine Sitzung?

Eine Sitzung ist eine Umgebung, in der PowerShell ausgeführt wird.

Jedes Mal, wenn Sie PowerShell starten, wird eine Sitzung für Sie erstellt, und Sie können Befehle in der Sitzung ausführen. Sie können Ihrer Sitzung auch Elemente hinzufügen, z. B. Module und Snap-Ins, und Sie können Elemente wie Variablen, Funktionen und Aliase erstellen. Diese Elemente sind nur in der Sitzung vorhanden und werden gelöscht, wenn die Sitzung endet.

Sie können auch benutzerverwaltete Sitzungen erstellen, die als "PowerShell-Sitzungen" oder "PSSessions" bezeichnet werden, auf dem lokalen Computer oder auf einem Remotecomputer. Wie bei der Standardsitzung können Sie Befehle in einer PSSession ausführen und Elemente hinzufügen und erstellen. Im Gegensatz zu der automatisch gestarteten Sitzung können Sie jedoch die von Ihnen erstellten PSSessions steuern. Sie können sie abrufen, erstellen, konfigurieren und entfernen, trennen und erneut verbinden und mehrere Befehle in derselben PSSession ausführen. Die PSSession bleibt verfügbar, bis Sie sie löschen oder es zu einem Zeitüberschreitungen kommt.

In der Regel erstellen Sie eine PSSession, um eine Reihe verwandter Befehle auf einem Remotecomputer auszuführen. Wenn Sie eine PSSession auf einem Remotecomputer erstellen, stellt PowerShell eine dauerhafte Verbindung mit dem Remotecomputer her, um die Sitzung zu unterstützen.

Wenn Sie den Parameter ComputerName des Invoke-Command Befehls oder Enter-PSSession Cmdlets zum Ausführen eines Remotebefehls oder zum Starten einer interaktiven Sitzung verwenden, erstellt PowerShell eine temporäre Sitzung auf dem Remotecomputer und schließt die Sitzung, sobald der Befehl abgeschlossen ist oder sobald die interaktive Sitzung endet. Sie können diese temporären Sitzungen nicht steuern, und Sie können sie nicht für mehrere Befehle oder eine einzelne interaktive Sitzung verwenden.

In PowerShell ist die "aktuelle Sitzung" die Sitzung, in der Sie arbeiten. Die "aktuelle Sitzung" kann auf eine beliebige Sitzung verweisen, einschließlich einer temporären Sitzung oder einer PSSession.

Warum eine PSSession verwenden?

Verwenden Sie eine PSSession, wenn Sie eine dauerhafte Verbindung mit einem Remotecomputer benötigen. Mit einer PSSession können Sie eine Reihe von Befehlen ausführen, die Daten freigeben, z. B. den Wert von Variablen, den Inhalt einer Funktion oder die Definition eines Alias.

Sie können Remotebefehle ausführen, ohne eine PSSession zu erstellen. Verwenden Sie den ComputerName-Parameter von Remote-fähigen Cmdlets, um einen einzelnen Befehl oder eine Reihe nicht verwandter Befehle auf einem oder mehreren Computern auszuführen.

Wenn Sie den Parameter ComputerName von Invoke-Command oder Enter-PSSessionverwenden, stellt PowerShell eine temporäre Verbindung mit dem Remotecomputer her und schließt die Verbindung, sobald der Befehl abgeschlossen ist. Alle datenelemente, die Sie erstellen, gehen verloren, wenn die Verbindung geschlossen wird.

Andere Cmdlets mit einem ComputerName-Parameter , z Get-Eventlog . B. und Get-WmiObject, verwenden verschiedene Remotingtechnologien zum Sammeln von Daten. Keine erstellt eine dauerhafte Verbindung wie eine PSSession.

So erstellen Sie eine PSSession

Verwenden Sie das New-PSSession Cmdlet, um eine PSSession zu erstellen. Verwenden Sie zum Erstellen der PSSession auf einem Remotecomputer den Parameter "ComputerName " des New-PSSession Cmdlets.

Der folgende Befehl erstellt beispielsweise eine neue PSSession auf dem Server01-Computer.

New-PSSession -ComputerName Server01

Wenn Sie den Befehl übermitteln, New-PSSession wird die PSSession erstellt und ein Objekt zurückgegeben, das die PSSession darstellt. Sie können das Objekt in einer Variablen speichern, wenn Sie die PSSession erstellen, oder Sie können einen Get-PSSession Befehl verwenden, um die PSSession zu einem späteren Zeitpunkt abzurufen.

Der folgende Befehl erstellt beispielsweise eine neue PSSession auf dem Server01-Computer und speichert das resultierende Objekt in der $ps Variablen.

$ps = New-PSSession -ComputerName Server01

So erstellen Sie PSSessions auf mehreren Computern

Verwenden Sie zum Erstellen von PSSessions auf mehreren Computern den Parameter "ComputerName " des New-PSSession Cmdlets. Geben Sie die Namen der Remotecomputer in eine durch Trennzeichen getrennte Liste ein.

Um z. B. PSSessions auf den Computern Server01, Server02 und Server03 zu erstellen, geben Sie Folgendes ein:

New-PSSession -ComputerName Server01, Server02, Server03

New-PSSession erstellt eine PSSession auf jedem der Remotecomputer.

So erhalten Sie PSSessions

Um die PSSessions abzurufen, die in Ihrer aktuellen Sitzung erstellt wurden, verwenden Sie das Get-PSSession Cmdlet ohne den Parameter ComputerName . Get-PSSession gibt denselben Objekttyp zurück, New-PSSession der zurückgegeben wird.

Der folgende Befehl ruft alle PSSessions ab, die in der aktuellen Sitzung erstellt wurden.

Get-PSSession

Die Standardanzeige der PSSessions zeigt ihre ID und einen Standardanzeigenamen an. Sie können beim Erstellen der Sitzung einen alternativen Anzeigenamen zuweisen.

Id   Name       ComputerName    State    ConfigurationName
---  ----       ------------    -----    ---------------------
1    Session1   Server01        Opened   Microsoft.PowerShell
2    Session2   Server02        Opened   Microsoft.PowerShell
3    Session3   Server03        Opened   Microsoft.PowerShell

Sie können die PSSessions auch in einer Variablen speichern. Der folgende Befehl ruft die PSSessions ab und speichert sie in der Variablen $ps 123.

$ps123 = Get-PSSession

Bei Verwendung der PSSession-Cmdlets können Sie anhand ihrer ID, des Namens oder der Instanz-ID (guiD) auf eine PSSession verweisen. Der folgende Befehl ruft eine PSSession anhand ihrer ID ab und speichert sie in der Variablen $ps 01.

$ps01 = Get-PSSession -Id 1

Ab Windows PowerShell 3.0 werden PSSessions auf dem Remotecomputer verwaltet. Um PSSessions abzurufen, die Sie auf bestimmten Remotecomputern erstellt haben, verwenden Sie den ComputerName-Parameter des Get-PSSession Cmdlets. Der folgende Befehl ruft die PSSessions ab, die Sie auf dem Remotecomputer Server01 erstellt haben. Dazu gehören PSSessions, die in der aktuellen Sitzung und in anderen Sitzungen auf dem lokalen Computer oder anderen Computern erstellt wurden.

Get-PSSession -ComputerName Server01

In Windows PowerShell 2.0 werden nur die PSSessions abgerufen, Get-PSSession die in der aktuellen Sitzung erstellt wurden. Es werden keine PSSessions abgerufen, die in anderen Sitzungen oder auf anderen Computern erstellt wurden, auch wenn die Sitzungen mit den Befehlen auf dem lokalen Computer verbunden sind und ausgeführt werden.

Ausführen von Befehlen in einer PSSession

Verwenden Sie das Invoke-Command Cmdlet, um einen Befehl in einem oder mehreren PSSessions auszuführen. Verwenden Sie den Session-Parameter, um die PSSessions und den ScriptBlock-Parameter anzugeben, um den Befehl anzugeben.

Wenn Sie beispielsweise einen Get-ChildItem Befehl ("dir") in jedem der drei PSSessions ausführen möchten, die in der Variablen $ps 123 gespeichert sind, geben Sie Folgendes ein:

Invoke-Command -Session $ps123 -ScriptBlock { Get-ChildItem }

So löschen Sie PSSessions

Wenn Sie mit der PSSession fertig sind, verwenden Sie das Remove-PSSession Cmdlet, um die PSSession zu löschen und die verwendeten Ressourcen freizugeben.

Remove-PSSession -Session $ps

or

Remove-PSSession -Id 1

Verwenden Sie den Parameter "ComputerName " des Remove-PSSession Cmdlets, um eine PSSession von einem Remotecomputer zu entfernen.

Remove-PSSession -ComputerName Server01 -Id 1

Wenn Sie die PSSession nicht löschen, bleibt die PSSession für die Verwendung verfügbar, bis es zu einem Zeitüberschreitungen kommt.

Sie können auch den IdleTimeout-Parameter des New-PSSessionOption Cmdlets verwenden, um eine Ablaufzeit für eine idle PSSession festzulegen. Weitere Informationen finden Sie unter New-PSSessionOption.

Die PSSession-Cmdlets

Geben Sie für eine Liste der PSSession-Cmdlets Folgendes ein:

Get-Help *-PSSession
  • Connect-PSSession: Verbindet eine PSSession mit der aktuellen Sitzung
  • Disconnect-PSSession: Trennt eine PSSession von der aktuellen Sitzung
  • Enter-PSSession: Startet eine interaktive Sitzung
  • Exit-PSSession: Beendet eine interaktive Sitzung
  • Get-PSSession: Ruft die PSSessions in der aktuellen Sitzung ab.
  • New-PSSession: Erstellt eine neue PSSession auf einem lokalen oder Remotecomputer.
  • Receive-PSSession: Ruft die Ergebnisse von Befehlen ab, die in einer getrennten Sitzung ausgeführt wurden.
  • Remove-PSSession: Löscht die PSSessions in der aktuellen Sitzung.

Hinweis

Getrennte Sitzungen werden nur unter Windows unterstützt. Die Connect-PSSessionCmdlets und Receive-PSSession Die Cmdlets Disconnect-PSSessionsind nur unter Windows verfügbar. Weitere Informationen zu getrennten Sitzungen finden Sie unter about_Remote_Disconnected_Session

Weitere Informationen

Weitere Informationen zu PSSessions finden Sie unter about_PSSession_Details.

Siehe auch