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-PSSession
verwenden, 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-PSSession
Cmdlets , Disconnect-PSSession
und 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.