THEMA
about_PSSession_Details
KURZBESCHREIBUNG
Stellt ausführliche Informationen über Windows PowerShell-
Sitzungen und ihre Funktion in Remotebefehlen bereit.
DETAILBESCHREIBUNG
Eine Sitzung ist eine Umgebung, in der Windows PowerShell
ausgeführt wird. Jedes Mal, wenn Sie Windows PowerShell starten,
wird eine Sitzung erstellt. Sie können auf Ihrem oder einem
anderen Computer weitere Sitzungen erstellen, die als "Windows
PowerShell-Sitzungen" oder "PSSessions" bezeichnet werden.
Im Gegensatz zu den Sitzungen, die von Windows PowerShell
erstellt werden, können Sie die eigenen PSSessions steuern und
verwalten.
PSSessions spielen eine wichtige Rolle im Hinblick auf
Remotecomputer. Wenn Sie eine PSSession erstellen, die mit einem
Remotecomputer verbunden ist, stellt Windows PowerShell eine dauerhafte
Verbindung mit dem Remotecomputer zur Unterstützung der PSSession
her. Mit der PSSession können Sie eine Reihe von Befehlen,
Funktionen und Skripts ausführen, die Daten gemeinsam verwenden.
Dieses Thema enthält ausführliche Informationen über Sitzungen
und PSSessions in Windows PowerShell. Grundlegende Informationen
über die Aufgaben, die Sie mit Sitzungen ausführen können, finden
Sie unter "about_PSSessions".
INFORMATIONEN ÜBER SITZUNGEN
Technisch gesehen ist eine Sitzung eine Ausführungsumgebung für
Windows PowerShell. Jede Sitzung enthält eine Instanz des
System.Management.Automation-Moduls sowie ein Hostprogramm, in
dem Windows PowerShell ausgeführt wird. Als Host kann die
vertraute Windows PowerShell-Konsole oder ein anderes Programm
zum Ausführen von Befehlen wie "Cmd.exe" verwendet werden. Sie
können auch ein Programm wie Windows PowerShell Integrated
Scripting Environment (ISE) verwenden, das als Host für Windows
PowerShell vorgesehen ist. Aus der Sicht von Windows stellt eine
Sitzung einen Windows-Prozess auf dem Zielcomputer dar.
Alle Sitzungen werden unabhängig voneinander konfiguriert. Jede
Sitzung verfügt über eigene Eigenschaften, eine eigene
Ausführungsrichtlinie sowie über eigene Profile. Die Umgebung, die zum
Zeitpunkt des Erstellens der Sitzung vorhanden ist, bleibt über die
Lebensdauer hinweg erhalten, auch wenn Sie die Umgebung auf dem
Computer ändern. Alle Sitzungen werden in einem globalen Bereich
erstellt. Dies gilt auch für Sitzungen, die Sie in einem Skript
erstellen.
Sie können nur je einen Befehl (oder eine Befehlspipeline) in
einer Sitzung ausführen. Ein zweiter Befehl, der synchron (einzeln)
ausgeführt wird, wartet bis zu vier Minuten, bis der erste Befehl
abgeschlossen ist. Ein zweiter Befehl, der asynchron (gleichzeitig)
ausgeführt wird, führt zu einem Fehler.
INFORMATIONEN ÜBER PSSESSIONS
Eine Sitzung wird immer dann erstellt, wenn Sie Windows
PowerShell starten. Außerdem erstellt Windows PowerShell temporäre
Sitzungen, um einzelne Befehle auszuführen. Sie können jedoch auch
Sitzungen (als "Windows PowerShell-Sitzungen" oder "PSSessions"
bezeichnet) erstellen, die Sie steuern und verwalten können.
PSSessions sind für Remotebefehle entscheidend. Wenn Sie den
ComputerName-Parameter des Cmdlets "Invoke-Command" oder des
Cmdlets "Enter-PSSession" verwenden, erstellt Windows PowerShell
eine temporäre Sitzung, um den Befehl auszuführen und schließt
die Sitzung, sobald der Befehl oder die interaktive Sitzung
vollständig ist.
Wenn Sie jedoch das Cmdlet "New-PSSession" verwenden, um eine
PSSession zu erstellen, erstellt Windows PowerShell eine
dauerhafte Sitzung auf dem Remotecomputer, in der mehrere Befehle
oder interaktive Sitzungen ausgeführt werden können. Die
PSSessions, die Sie erstellen, bleiben so lange geöffnet und
verfügbar, bis Sie sie löschen oder die Sitzung schließen, in der
sie erstellt wurden.
Wenn Sie eine PSSession auf einem Remotecomputer erstellen, wird
ein PowerShell-Prozess vom System auf dem Remotecomputer erstellt
und es wird eine Verbindung vom lokalen Computer zum Prozess auf
dem Remotecomputer hergestellt. Wenn Sie eine PSSession auf dem
lokalen Computer erstellen, werden sowohl der neue Prozess als
auch die Verbindungen auf dem lokalen Computer erstellt.
WANN SIND PSSESSIONS ERFORDERLICH?
Die Cmdlets "Invoke-Command" und "Enter-PSSession" verfügen über
den ComputerName-Parameter und den Session-Parameter. Beide
Cmdlets können zur Ausführung eines Remotebefehls verwendet
werden.
Mit dem ComputerName-Parameter können Sie einzelne Befehle oder
eine Reihe nicht verknüpfter Befehle auf einem oder mehreren
Computern ausführen.
Um Befehle mit gemeinsamen Daten auszuführen, ist eine dauerhafte
Verbindung zum Remotecomputer erforderlich. Erstellen Sie in
diesem Fall eine PSSession, und führen Sie Befehle in der
PSSession mit dem Session-Parameter aus.
Viele andere Cmdlets, die Daten von Remotecomputern abrufen, wie
"Get-Process", "Get-Service", "Get-EventLog" und "Get-WmiObject"
verfügen nur über den ComputerName-Parameter. Sie erfassen
Remotedaten mit anderen Technologien als Windows PowerShell-
Remoting. Diese Cmdlets verfügen nicht über einen Session-
Parameter, Sie jedoch können das Cmdlet "Invoke-Command"
verwenden, um diese Befehle in einer PSSession auszuführen.
WIE WERDEN PSSESSIONS ERSTELLT?
Das Cmdlet "New-PSSession" ermöglicht das Erstellen einer
PSSession. Mit New-PSSession können Sie eine PSSession auf einem
lokalen Computer oder auf einem Remotecomputer erstellen.
KÖNNEN PSSESSIONS AUF JEDEM COMPUTER ERSTELLT WERDEN?
Um eine PSSession zu erstellen, die mit einem Remotecomputer
verbunden wird, muss der Computer für Remoting in Windows PowerShell
konfiguriert werden. Der aktuelle Benutzer muss Mitglied der Gruppe
"Administratoren" auf dem Remotecomputer sein oder die Anmeldeinformat
ionen eines Mitglieds in der Gruppe "Administratoren" angeben.
Weitere Informationen finden Sie unter "about_Remote_Requirements".
KÖNNEN PSSESSIONS ANGEZEIGT WERDEN, DIE VON ANDEREN BENUTZERN AUF
DEM COMPUTER ERSTELLT WURDEN?
Nein. Sie können nur die PSSessions abrufen und verwalten, die
Sie in der aktuellen Sitzung erstellt haben. PSSessions, die von
anderen Benutzern erstellt wurden, können nicht angezeigt werden.
Dies gilt auch, wenn Befehle auf dem lokalen Computer ausgeführt
werden.
KÖNNEN HINTERGRUNDAUFTRÄGE IN EINER PSSESSION AUSGEFÜHRT WERDEN?
Ja. Ein Hintergrundauftrag ist ein Befehl, der asynchron im
Hintergrund ohne Interaktion mit der aktuellen Sitzung ausgeführt
wird. Wenn Sie einen Befehl senden, um einen Auftrag zu starten,
gibt der Befehl ein Auftragsobjekt zurück; der Auftrag wird jedoch
weiterhin im Hintergrund ausgeführt, bis er abgeschlossen ist.
Verwenden Sie den Befehl "Start-Job", um einen Hintergrundauftrag
auf dem lokalen Computer zu starten. Sie können den
Hintergrundauftrag in einer temporären Verbindung (mit dem
ComputerName-Parameter) oder in einer PSSession (mit dem
Session-Parameter) ausführen.
Mit dem Cmdlet "Invoke-Command" und dem AsJob-Parameter können
Sie einen Hintergrundauftrag auf einem Remotecomputer starten.
Sie können auch mit dem Cmdlet "Invoke-Command" einen
Start-Job-Befehl auf einem Remotecomputer ausführen. Wenn Sie den
AsJob-Parameter verwenden, können Sie den ComputerName-Parameter
oder den Session-Parameter verwenden.
Wenn Sie einen Start-Job-Befehl mit Invoke-Command ausführen,
muss der Befehl in einer PSSession ausgeführt werden. Wenn Sie
den ComputerName-Parameter verwenden, beendet Windows PowerShell
die Verbindung, sobald das Auftragsobjekt zurückgegeben wird, und
der Auftrag wird unterbrochen.
Weitere Informationen finden Sie unter "about_Jobs".
IST DIE AUSFÜHRUNG VON INTERAKTIVEN SITZUNGEN MÖGLICH?
Ja. Mit dem Cmdlet "Enter-PSSession" wird eine interaktive
Sitzung mit einem Remotecomputer gestartet. In einer interaktiven
Sitzung werden die eingegebenen Befehle auf dem Remotecomputer
ausgeführt, als ob diese direkt auf dem Remotecomputer eingegeben
würden.
Sie können eine interaktive Sitzung (mit dem ComputerName-Parameter)
in einer temporären Sitzung oder (mit dem Session-Parameter)
in einer PSSession ausführen. Wenn Sie eine PSSession verwenden,
werden die Daten aus vorherigen Befehlen sowie alle Daten, die im
Rahmen der interaktiven Sitzung generiert wurden, in der
PSSession zur Verwendung in späteren Befehlen beibehalten.
Wenn Sie die interaktive Sitzung beenden, bleibt die PSSession
geöffnet und verfügbar.
Weitere Informationen finden Sie unter Enter-PSSession und
Exit-PSSession.
MÜSSEN DIE PSSESSIONS GELÖSCHT WERDEN?
Ja. Eine PSSession ist ein Prozess, bei dem es sich um eine in
sich abgeschlossene Umgebung handelt, die Arbeitsspeicher und
andere Ressourcen verwendet, auch wenn sie nicht genutzt wird.
Löschen Sie die PSSession daher, wenn Sie sie nicht mehr benöti-
gen. Wenn Sie mehrere PSSessions erstellen, schließen Sie die
PSSessions, die Sie nicht benötigen, und behalten Sie nur die
gerade verwendeten Sitzungen bei.
Verwenden Sie zum Löschen von PSSessions das Cmdlet
"Remove-PSSession". Mit dem Cmdlet werden die PSSessions
gelöscht, und entsprechend verwendete Ressourcen werden freigegeben.
Sie können auch den TimeOut-Parameter von New-PSSession
verwenden, um eine PSSession im Leerlauf nach einem festgelegten
Intervall zu schließen. Weitere Informationen finden Sie unter
"New-PSSession".
Wenn Sie die PSSession nicht löschen oder ein Timeout festlegen,
bleibt die PSSession geöffnet und verfügbar, bis Sie sie
schließen, die Sitzung schließen, in der sie erstellt wurde, oder
Windows PowerShell beenden. Wenn der Remotecomputer vier Minuten
lang nicht antwortet, wird die Verbindung mit der PSSession auf einem
Remotecomputer jedoch getrennt. (Der Remotecomputer ist so
konfiguriert, dass alle drei Minuten ein Taktpuls gesendet wird.)
Wenn Sie ein PSSession-Objekt in einer Variablen speichern und
anschließend die PSSession löschen oder es zu einem Timeout
kommt, enthält die Variable weiterhin das PSSession-Objekt; die
PSSession ist jedoch nicht aktiv und kann nicht verwendet oder
repariert werden.
SIND ALLE SITZUNGEN UND PSSESSIONS GLEICH?
Nein. Entwickler können benutzerdefinierte Sitzungen erstellen,
die nur ausgewählte Anbieter und Cmdlets enthalten. Wenn ein
Befehl in einer Sitzung funktioniert, nicht jedoch in einer
anderen, ist die Sitzung möglicherweise eingeschränkt.
SIEHE AUCH
about_Jobs
about_PSSessions
about_Remote
about_Remote_Requirements
Invoke-Command
New-PSSession
Get-PSSession
Remove-PSSession
Enter-PSSession
Exit-PSSession