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