Informationen zu PSSessions
Kurze Beschreibung
Beschreibt Windows PowerShell Sitzungen (PSSessions) und erläutert, wie eine dauerhafte Verbindung mit einem Remotecomputer hergestellt wird.
Lange Beschreibung
Um Windows PowerShell Befehle auf einem Remotecomputer auszuführen, können Sie den ComputerName-Parameter eines Cmdlets verwenden, oder Sie können eine Windows PowerShell-Sitzung (PSSession) erstellen und Befehle in der PSSession ausführen.
Wenn Sie eine PSSession erstellen, stellt Windows PowerShell eine permanente 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 teilen, 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 Windows PowerShell Remotinginfrastruktur zum Erstellen und Verwalten der PSSession.
Ab Windows PowerShell 3.0 sind PSSessions unabhängig von den Sitzungen, in denen sie erstellt werden. Aktive PSSessions werden auf dem Remotecomputer (oder dem Computer am Remoteende oder auf der "Serverseite" der Verbindung) verwaltet. Infolgedessen können Sie die Verbindung mit der PSSession trennen und zu einem späteren Zeitpunkt vom gleichen Computer oder von einem anderen Computer wieder mit ihr verbinden.
In diesem Thema wird erläutert, wie Sie PSSessions erstellen, verwenden, abrufen und löschen. Ausführlichere Informationen finden Sie unter about_PSSession_Details.
Hinweis: PSSessions verwenden die Windows 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 Windows 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 Windows PowerShell ausgeführt wird.
Jedes Mal, wenn Sie Windows 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 "Windows PowerShell-Sitzungen" oder "PSSessions" bezeichnet werden, auf dem lokalen Computer oder auf einem Remotecomputer. Wie in der Standardsitzung können Sie Befehle in einer PSSession ausführen und Elemente hinzufügen und erstellen. Im Gegensatz zur Sitzung, die automatisch gestartet wird, können Sie jedoch die von Ihnen erstellten PSSessions steuern. Sie können sie abrufen, erstellen, konfigurieren und entfernen, trennen und wieder eine Verbindung herstellen und mehrere Befehle in derselben PSSession ausführen. Die PSSession bleibt verfügbar, bis Sie sie löschen oder ein Timeout ausführen.
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 Windows 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 Windows 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 nicht für mehr als einen einzelnen Befehl oder eine einzelne interaktive Sitzung verwenden.
In Windows PowerShell ist die "aktuelle Sitzung" die Sitzung, in der Sie arbeiten. Die "aktuelle Sitzung" kann auf jede 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 Remote-aktivierten Cmdlets, um einen einzelnen Befehl oder eine Reihe nicht verwandter Befehle auf einem oder mehreren Computern auszuführen.
Wenn Sie den ComputerName-Parameter von Invoke-Command
oder Enter-PSSession
verwenden, stellt Windows PowerShell eine temporäre Verbindung mit dem Remotecomputer her und schließt die Verbindung, sobald der Befehl abgeschlossen ist. Alle von Ihnen erstellten Datenelemente 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. Keiner erstellt eine dauerhafte Verbindung wie eine PSSession.
So 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 Server01-Computer und speichert das resultierende Objekt in der $ps Variablen.
$ps = New-PSSession -ComputerName Server01
So Create PSSessions auf mehreren Computern
Um PSSessions auf mehreren Computern zu erstellen, verwenden Sie den ComputerName-Parameter des New-PSSession
Cmdlets. Geben Sie die Namen der Remotecomputer in eine durch Trennzeichen getrennte Liste ein.
Geben Sie beispielsweise folgendes ein, um PSSessions auf den Computern Server01, Server02 und Server03 zu erstellen:
New-PSSession -ComputerName Server01, Server02, Server03
New-PSSession
erstellt eine PSSession auf jedem Remotecomputer.
So erhalten Sie PSSessions
Verwenden Sie das Cmdlet ohne den ComputerName-Parameter, um die Get-PSSession
PSSessions abzurufen, die in Ihrer aktuellen Sitzung erstellt wurden. Get-PSSession
gibt denselben Objekttyp zurück, der zurückgegeben New-PSSession
wird.
Mit dem folgenden Befehl werden alle PSSessions abgerufen, 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
Wenn Sie die PSSession-Cmdlets verwenden, können Sie auf eine PSSession anhand der ID, des Namens oder der instance ID (GUID) verweisen. Mit dem folgenden Befehl wird eine PSSession anhand der ID abgerufen und in der Variablen $ps 01 gespeichert.
$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. Mit dem folgenden Befehl werden die PSSessions abgerufen, die Sie auf dem Server01-Remotecomputer erstellt haben. Dies umfasst PSSessions, 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 den PSSessions-Parameter 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 das Timeout fällt.
Sie können auch den IdleTimeout-Parameter des New-PSSessionOption
Cmdlets verwenden, um eine Ablaufzeit für eine PSSession im Leerlauf festzulegen. Weitere Informationen finden Sie unter New-PSSessionOption.
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.
Weitere Informationen
Weitere Informationen zu PSSessions finden Sie unter about_PSSession_Details.