about_PSSessions
Kurze Beschreibung
Beschreibt Windows PowerShell-Sitzungen (PSSessions) und erläutert, wie eine dauerhafte Verbindung mit einem Remotecomputer hergestellt wird.
Lange Beschreibung
Zum Ausführen von Windows PowerShell-Befehlen auf einem Remotecomputer können Sie den ComputerName-Parameter eines Cmdlets verwenden oder 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 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 Windows PowerShell-Remotinginfrastruktur, um die PSSession zu erstellen und zu verwalten.
Ab Windows PowerShell 3.0 sind PSSessions 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 die Verbindung mit der PSSession trennen und zu einem späteren Zeitpunkt erneut von demselben Computer oder einem anderen Computer 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 Windows 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 Windows PowerShell mit der Option "Als Administrator ausführen" starten.
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 benutzerverwaltete Sitzungen erstellen, die als "Windows 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 Windows 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 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 Sie können sie nicht für mehrere Befehle oder eine einzelne interaktive Sitzung verwenden.
In Windows 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-PSSession
"ComputerName" verwenden, stellt Windows 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.
Weitere Informationen
Weitere Informationen zu PSSessions finden Sie unter about_PSSession_Details.