about_PSSession_Details

Letzte Aktualisierung: Mai 2014

Betrifft: Windows PowerShell 2.0, Windows PowerShell 3.0, Windows PowerShell 4.0, Windows PowerShell 5.0

THEMA

about_PSSession_Details

KURZE BESCHREIBUNG

Bietet ausführliche Informationen über Windows PowerShell-Sitzungen und die Rolle, die diese in Remote-Befehlen spielen.

LANGE BESCHREIBUNG

Eine Sitzung ist eine Umgebung, in der Windows PowerShell ausgeführt wird. Bei bei jedem Start von Windows PowerShell wird eine Sitzung für Sie erstellt. Sie können auf Ihrem Computer oder einem anderen Computer zusätzliche Sitzungen erstellen, die „Windows PowerShell-Sitzungen“ bzw. „PSSessions“ heißen.

Im Gegensatz zu Sitzungen, die von Windows PowerShell für Sie erstellt werden, sind Sie für die Steuerung und Verwaltung der von Ihnen erstellten PSSessions verantwortlich.

PSSessions spielen eine wichtige Rolle beim Remote-Computing. Wenn Sie eine PSSession erstellen, die mit einem Remote-Computer verbunden ist, richtet Windows PowerShell eine dauerhafte Verbindung mit dem Remote-Computer her, um die PSSession zu unterstützen. Mithilfe der PSSession können Sie eine Reihe von Befehlen, Funktionen und Skripts ausführen, die Daten gemeinsam nutzen.

Dieses Thema enthält ausführliche Informationen zu Sitzungen und PSSessions in Windows PowerShell. Grundlegende Informationen zu den Aufgaben, die mit Sitzungen ausgeführt werden können, finden Sie unter „about_PSSessions“.

INFORMATIONEN ZU SITZUNGEN

Technisch gesehen ist eine Sitzung eine Ausführungsumgebung, in der Windows PowerShell ausgeführt wird. Jede Sitzung enthält eine Instanz der System.Management.Automation-Engine und ein Host-Programm, in dem Windows PowerShell ausgeführt wird. Bei dem Host kann es sich um die vertraute Windows PowerShell-Konsole oder ein anderes Programm handelt, das Befehle wie z. B. Cmd.exe ausführt, oder um ein Programm, das speziell zum Hosten von Windows PowerShell entwickelt wurde, wie z. B. die Integrated Scripting Environment (ISE) von Windows PowerShell. Aus der Sicht von Windows ist eine Sitzung ein Windows-Prozess auf dem Zielcomputer.

Jede Sitzung wird unabhängig konfiguriert. Sie enthält ihre eigenen Eigenschaften, ihre eigene Ausführungsrichtlinie und ihre eigenen Profile. Die Umgebung, die beim Erstellen der Sitzung vorhanden ist, wird während ihrer gesamten Lebensdauer beibehalten, auch wenn Sie die Umgebung auf dem Computer ändern. Alle Sitzungen werden in einem globalen Bereich erstellt, sogar die Sitzungen, die Sie in einem Skript erstellen.

In einer Sitzung können Sie immer nur einen Befehl (bzw. eine Befehls-Pipeline) gleichzeitig ausführen. Ein zweiter Befehl, der synchron (jeweils einzeln) ausgeführt wird, wartet bis zu vier Minuten, bis der erste Befehl abgeschlossen wurde. Ein zweiter Befehl, der asynchron (parallel) ausgeführt wird, schlägt fehl.

INFORMATIONEN ZU PSSESSIONS

Eine Sitzung wird jedes Mal erstellt, wenn Sie Windows PowerShell starten. Und Windows PowerShell erstellt temporäre Sitzungen, um einzelne Befehle auszuführen. Allerdings können auch Sie Sitzungen erstellen (die „Windows PowerShell-Sitzungen“ bzw. „PSSessions“ heißen), bei denen Sie für die Steuerung und Verwaltung verantwortlich sind.

PSSessions sind entscheidend für Remote-Befehle. Wenn Sie den ComputerName-Parameter der Invoke-Command- oder Enter-PSSession-Cmdlets verwenden, richtet Windows PowerShell eine temporäre Sitzung ein, um den Befehl auszuführen, und schließt dann die Sitzung, sobald der Befehl oder die interaktive Sitzung abgeschlossen ist.

Wenn Sie jedoch das New-PSSession-Cmdlet verwenden, um eine PSSession zu erstellen, richtet Windows PowerShell eine dauerhafte Sitzung auf dem Remote-Computer ein, in der Sie mehrere Befehle oder interaktive Sitzungen ausführen können. Die von Ihnen erstellten PSSessions bleiben geöffnet und einsatzbereit, bis Sie sie löschen oder bis Sie die Sitzung schließen, in der sie erstellt wurden.

Wenn Sie eine PSSession auf einem Remote-Computer erstellen, wird vom System ein PowerShell-Prozess auf dem Remote-Computer erstellt und eine Verbindung vom lokalen Computer zu dem Prozess auf dem Remote-Computer hergestellt. Wenn Sie eine PSSession auf dem lokalen Computer erstellen, werden auf dem lokalen Computer sowohl der neue Prozess als auch die Verbindungen erstellt.

WANN BENÖTIGE ICH EINE PSSESSION?

Die Invoke-Command- und Enter-PSSession-Cmdlets verfügen jeweils über die ComputerName- und Session Parameter. Sie können beide verwenden, um einen Remote-Befehl auszuführen.

Verwenden Sie den ComputerName-Parameter, um einen einzelnen Befehl oder eine Reihe von unabhängigen Befehlen auf einem oder mehreren Computern auszuführen.

Um Befehle auszuführen, die Daten gemeinsam nutzen, benötigen Sie eine dauerhafte Verbindung zu dem Remote-Computer. In diesem Fall erstellen Sie eine PSSession und verwenden anschließend den Session-Parameter zum Ausführen der Befehle in der PSSession.

Viele andere Cmdlets, die Daten von Remote-Computern abrufen, wie etwa Get-Process, Get-Service, Get-EventLog und Get-WmiObject, verfügen nur über einen ComputerName-Parameter. Sie verwenden andere Technologien als das Windows PowerShell-Remoting, um die Remote-Sammlung von Daten zu bewerkstelligen. Diese Cmdlets verfügen nicht über einen Session-Parameter, allerdings können Sie das Invoke-Command-Cmdlet verwenden, um diese Befehle in einer PSSession auszuführen.

WIE ERSTELLE ICH EINE PSSESSION?

Um eine PSSession zu erstellen, verwenden Sie das Cmdlet „New-PSSession“. Mithilfe von New-PSSession können Sie eine PSSession auf einem lokalen Computer oder Remote-Computer erstellen.

KANN ICH AUF JEDEM COMPUTER EINE PSSESSION ERSTELLEN?

Um eine PSSession zu erstellen, die mit einem Remote-Computer verbunden ist, muss der Computer für das Remoting in Windows PowerShell konfiguriert sein. Der aktuelle Benutzer muss ein Mitglied der Gruppe „Administratoren“ auf dem Remote-Computer sein, oder der aktuelle Benutzer muss in der Lage sein, die Anmeldeinformationen eines Mitglieds der Gruppe „Administratoren“ einzugeben. Weitere Informationen finden Sie unter %%amp;quot;about_Remote_Requirements%%amp;quot;.

KANN ICH MEINE PSSESSIONS IN ANDEREN SITZUNGEN ANZEIGEN?

Ab Windows PowerShell 3.0 können mit dem ComputerName-Parameter des Get-PSSession-Cmdlets die PSSessions abgerufen werden, die Sie auf den angegebenen Remote-Computern erstellt haben.

Aktive PSSessions werden auf dem Remote-Computer (der „Server-Seite“ einer Verbindung) beibehalten, und Sie können sie aus jeder Sitzung auf einem beliebigen Computer abrufen.

Wenn Sie z. B. eine PSSession vom Server01-Computer aus auf dem Server02-Computer erstellen und dann zum Server03-Computer wechseln, können Sie einen Befehl wie den folgenden verwenden, um die Sitzung abzurufen.

      Get-PSSession -ComputerName Server02

Selbst wenn Sie sich von der Sitzung trennen, wird die Sitzung auf dem Remote-Computer beibehalten, bis sie gelöscht wird oder durch ein Timeout ausläuft.

In Windows PowerShell 2.0 können Sie nur die PSSessions abrufen, die Sie in der aktuellen Sitzung erstellt haben. Sie können keine PSSessions abrufen, die Sie in anderen Sitzungen erstellt haben.

Weitere Informationen finden Sie unter „Get-PSSession“.

KANN ICH DIE PSSESSIONS ANZEIGEN, DIE ANDERE AUF MEINEM COMPUTER ERSTELLT HABEN?

Sie können die von anderen Personen erstellten PSSessions nur dann abrufen und verwalten, wenn Sie die Anmeldeinformationen des Benutzers eingeben können, der die PSSession erstellt hat, oder wenn die von der PSSession verwendete Sitzungskonfiguration die RunAs-Anmeldeinformationen enthält. Ansonsten können Sie nur die von Ihnen selbst erstellten PSSessions abrufen, die Verbindung zu ihnen herstellen, sie verwenden und verwalten.

KANN ICH VON EINEM ANDEREN COMPUTER AUS EINE VERBINDUNG ZU EINER PSSESSION HERSTELLEN?

Ab Windows PowerShell 3.0 sind PSSessions unabhängig von der Sitzung, in der sie erstellt wurden. Aktive PSSessions werden auf dem Computer auf der Remote- oder „Server-Seite“ einer Verbindung beibehalten.

Mit dem Disconnect-PSSession-Cmdlet können die Verbindung zu einer PSSession trennen. Der PSSession wird dadurch zwar von der lokalen Sitzung getrennt, wird aber auf dem Remote-Computer beibehalten. In der getrennten PSSession werden weiterhin Befehle ausgeführt. Sie können Windows PowerShell schließen und den Ursprungscomputer herunterfahren, ohne dass die PSSession unterbrochen wird.

Dann können Sie sogar noch nach Stunden das Get-PSSession-Cmdlet verwenden, um die PSSession abzurufen, und das Connect-PSSession-Cmdlet, um von einer neuen Sitzung auf einem anderen Computer die Verbindung zur PSSession herzustellen.

Weitere Informationen finden Sie unter „about_Remote_Disconnected_Sessions“ (https://go.microsoft.com/fwlink/?LinkID=252847).

WAS GESCHIEHT MIT MEINER PSSESSION, WENN MEIN COMPUTER NICHT MEHR VERFÜGBAR IST?

Getrennte PSSessions sind unabhängig von der Sitzung, in der sie erstellt wurden. Wenn Sie eine PSSession trennen und Sie den Ursprungscomputer herunterfahren, wird die PSSession auf dem Remote-Computer beibehalten.

Darüber hinaus versucht Windows PowerShell, aktive PSSessions wiederherstellen, die versehentlich getrennt wurden, etwa durch einen Computer-Neustart, einen temporären Stromausfall oder eine Netzwerkunterbrechung. Windows PowerShell versucht, die PSSession beizubehalten oder in einem Opened-Status wiederherzustellen, wenn die Ursprungssitzung noch verfügbar ist, oder im Disconnected-Status, wenn das nicht der Fall ist.

Eine „aktive“ PSSession ist eine Sitzung, die Befehle ausführt. Wenn ein PSSession verbunden (nicht getrennt) ist und Befehle in der PSSession ausgeführt werden, wenn die verbundene Sitzung beendet wird, versucht Windows PowerShell, die PSSession auf dem Remote-Computer beizubehalten. Wenn jedoch keine Befehle in der PSSession ausgeführt werden, schließt Windows PowerShell die PSSession, wenn die verbundene Sitzung geschlossen wird.

Weitere Informationen finden Sie unter „about_Remote_Disconnected_Sessions“ (https://go.microsoft.com/fwlink/?LinkID=252847).

KANN ICH EINEN HINTERGRUNDAUFTRAG IN EINER PSSESSION AUSFÜHREN?

Ja. Ein Hintergrundauftrag ist ein Befehl, der asynchron im Hintergrund ausgeführt wird und nicht mit der aktuellen Sitzung interagiert. Wenn Sie einen Befehl zum Starten eines Auftrags übermitteln, gibt der Befehl gibt ein Auftragsobjekt zurück, aber der Auftrag wird weiterhin im Hintergrund ausgeführt, bis er abgeschlossen ist.

Um einen Hintergrundauftrag auf einem lokalen Computer zu starten, verwenden Sie das Start-Job-Cmdlet. Sie können den Hintergrundauftrag in einer temporären Verbindung ausführen (mithilfe des ComputerName-Parameters) oder in einer PSSession (mithilfe des Session-Parameters).

Um einen Hintergrundauftrag auf einem Remote-Computer zu starten, verwenden Sie das Invoke-Command-Cmdlet mit seinem AsJob-Parameter. oder Sie verwenden das Invoke-Command-Cmdlet, um einen Start-Job-Befehl auf einem Remote-Computer auszuführen. Wenn Sie den AsJob-Parameter verwenden, können Sie die ComputerName- oder Session-Parameter verwenden.

Bei Verwendung von Invoke-Command zum Ausführen eines Start-Job-Befehls müssen Sie den Befehl in einer PSSession ausführen. Wenn Sie den ComputerName-Parameter verwenden, beendet Windows PowerShell die Verbindung, wenn das Auftragsobjekt zurückgegeben wird, und der Auftrag wird unterbrochen.

Weitere Informationen finden Sie unter %%amp;quot;about_Jobs%%amp;quot;.

KANN ICH EINE INTERAKTIVE SITZUNG AUSFÜHREN?

Ja. Um eine interaktive Sitzung mit einem Remote-Computer zu starten, verwenden Sie das Enter-PSSession-Cmdlet. In einer interaktiven Sitzung werden die von Ihnen eingegebenen Befehle auf dem Remote-Computer ausgeführt, als würden Sie sie direkt auf dem Remote-Computer eingeben.

Sie können eine interaktive Sitzung in eine temporäre Sitzung ausführen (mithilfe des ComputerName-Parameters) oder in einer PSSession (mithilfe des Session-Parameters). Wenn Sie eine PSSession verwenden, behält die PSSession die Daten aus den vorherigen Befehlen bei, und die PSSession behält alle Daten bei, die während der interaktiven Sitzung erzeugt wurden, um sie für spätere Befehle verwenden zu können.

Wenn Sie die interaktive Sitzung beenden, bleibt die PSSession offen und einsatzbereit.

Weitere Informationen finden Sie unter „Enter-PSSession“ und „Exit-PSSession“.

MUSS ICH DIE PSSESSIONS LÖSCHEN?

Ja. Eine PSSession ist ein Prozess, also eine eigenständige Umgebung, die Arbeitsspeicher und andere Ressourcen verwendet, auch wenn Sie sie nicht verwenden. Wenn Sie eine PSSession beendet haben, müssen Sie sie löschen. Wenn Sie mehrere PSSessions erstellen, schließen Sie diejenigen, die Sie nicht verwenden, und behalten Sie nur die aktuell verwendeten bei.

Um PSSessions zu löschen, verwenden Sie das Remove-PSSession-Cmdlet. Es löscht die PSSessions und gibt alle Ressourcen wieder frei, die von ihnen verwendet wurden.

Sie können auch den IdleTimeOut-Parameter von New-PSSessionOption verwenden, um eine im Leerlauf befindliche PSSession nach einem bestimmten Zeitintervall zu schließen, das Sie angeben. Weitere Informationen finden Sie unter „New-PSSessionOption“.

Wenn Sie ein PSSession-Objekt in einer Variablen speichern und dann die PSSession löschen oder durch ein Timeout auslaufen lassen, enthält die Variable weiterhin das PSSession-Objekt, aber die PSSession ist 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, jedoch nicht in einen anderen, kann das daran liegen, dass es sich um eine Sitzung mit Einschränkungen handelt.

SIEHE AUCH

about_Jobs

about_PSSessions

about_Remote

about_Remote_Disconnected_Sessions

about_Remote_Requirements

Invoke-Command

New-PSSession

Get-PSSession

Remove-PSSession

Enter-PSSession

Exit-PSSession