Freigeben über


about_PSSessions

Kurze Beschreibung

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

Lange Beschreibung

Um PowerShell-Befehle auf einem Remotecomputer auszuführen, können Sie den ComputerName-Parameter eines Cmdlets verwenden, oder Sie können 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 darin Befehle 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 dem Computer am Remote-Ende oder "serverseitig" der Verbindung) verwaltet. Daher können Sie unter Windows die Verbindung mit einer PSSession auf einem Windows-Remotecomputer trennen und zu einem späteren Zeitpunkt vom gleichen Computer oder von einem anderen Windows-Computer wieder herstellen.

In diesem Thema wird erläutert, wie Sie PSSessions erstellen, verwenden, abrufen und löschen. Weitere Informationen finden Sie unter about_PSSession_Details.

Hinweis: PSSessions verwenden die PowerShell-Remotinginfrastruktur. Um PSSessions verwenden zu können, müssen die lokalen Und Remotecomputer für Remoting konfiguriert sein. Weitere Informationen finden Sie unter about_Remote_Requirements.

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

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 benutzerseitig verwaltete 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 zur automatisch gestarteten Sitzung können Sie jedoch die von Ihnen erstellten PSSessions steuern. Sie können sie abrufen, erstellen, konfigurieren und entfernen, die Verbindung trennen und erneut herstellen und mehrere Befehle in derselben PSSession ausführen. Die PSSession bleibt verfügbar, bis Sie sie löschen oder ein Timeout aufweist.

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 ComputerName-Parameter des Invoke-Command - oder Enter-PSSession -Cmdlets verwenden, um einen Remotebefehl auszuführen oder eine interaktive Sitzung zu starten, 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 mehr als einen einzelnen Befehl 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.

Gründe für die Verwendung einer PSSession

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 gemeinsam nutzen, 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 remotefähigen Cmdlets, um einen einzelnen Befehl oder eine Reihe von nicht verwandten Befehlen auf einem oder mehreren Computern auszuführen.

Wenn Sie den ComputerName-Parameter 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, die über einen ComputerName-Parameter verfügen, z Get-Eventlog . B. und Get-WmiObject, verwenden verschiedene Remotingtechnologien, um Daten zu sammeln. Keine erstellt eine dauerhafte Verbindung wie eine PSSession.

Create einer PSSession

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

Mit dem folgenden Befehl wird beispielsweise eine neue PSSession auf dem Server01-Computer erstellt.

New-PSSession -ComputerName Server01

Wenn Sie den Befehl übermitteln, New-PSSession erstellt die PSSession und gibt ein Objekt zurück, 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 Computer Server01 und speichert das resultierende Objekt in der variablen $ps.

$ps = New-PSSession -ComputerName Server01

Create von PSSessions auf mehreren Computern

Verwenden Sie zum Erstellen von PSSessions auf mehreren Computern den ComputerName-Parameter 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 Remotecomputer.

Abrufen von PSSessions

Um die PSSessions abzurufen, die in Ihrer aktuellen Sitzung erstellt wurden, verwenden Sie das Get-PSSession Cmdlet ohne den ComputerName-Parameter . 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 einen alternativen Anzeigenamen zuweisen, wenn Sie die Sitzung erstellen.

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

Wenn Sie die PSSession-Cmdlets verwenden, können Sie auf eine PSSession anhand ihrer ID, ihres Namens oder ihrer instance-ID (GUID) 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. Verwenden Sie den ComputerName-Parameter des Cmdlets, um PSSessions abzurufen, die Get-PSSession Sie auf bestimmten Remotecomputern erstellt haben. Der folgende Befehl ruft die PSSessions ab, die Sie auf dem Server01-Remotecomputer erstellt haben. Dies schließt PSSessions ein, die in der aktuellen Sitzung und in anderen Sitzungen auf dem lokalen Computer oder anderen Computern erstellt wurden.

Get-PSSession -ComputerName Server01

Ruft in Windows PowerShell 2.0 nur die PSSessions ab, 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 dem lokalen Computer verbunden sind und Befehle ausführen.

Ausführen von Befehlen in einer PSSession

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

Um beispielsweise einen Get-ChildItem Befehl ("dir") in jeder der drei PSSessions auszuführen, die in der Variablen $ps 123 gespeichert sind, geben Sie Folgendes ein:

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

Löschen von 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

oder

Remove-PSSession -Id 1

Um eine PSSession von einem Remotecomputer zu entfernen, verwenden Sie den ComputerName-Parameter des Remove-PSSession Cmdlets.

Remove-PSSession -ComputerName Server01 -Id 1

Wenn Sie die PSSession nicht löschen, bleibt die PSSession für die Verwendung verfügbar, bis ein Timeout besteht.

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

Die PSSession-Cmdlets

Geben Sie folgendes ein, um eine Liste der PSSession-Cmdlets anzuzeigen:

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 , Disconnect-PSSessionund Receive-PSSession sind 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