THEMA about_PSSessions KURZBESCHREIBUNG Beschreibt Windows PowerShell-Sitzungen (PSSessions) und erläutert, wie eine dauerhafte Verbindung mit einem Remotecomputer hergestellt wird. DETAILBESCHREIBUNG Sie können Windows PowerShell-Befehle auf einem Remotecomputer mit dem ComputerName-Parameter eines Cmdlet ausführen, oder Sie können eine Windows PowerShell-Sitzung (PSSession)erstellen und Befehle darin ausführen. Wenn Sie eine PSSession erstellen, wird von Windows PowerShell eine dauerhafte Verbindung mit dem Remotecomputer hergestellt. Mit einer PSSession können Sie eine Reihe verwandter Befehle auf einem Remotecomputer ausführen. Befehle, die in einer PSSession ausgeführt werden, können gemeinsame Daten verwenden, beispielsweise 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. In diesem Thema wird erläutert, wie PSSessions erstellt, verwendet, abgerufen und gelöscht werden. Weitere Informationen erhalten Sie mit folgendem Befehl: "get-help about_PSSession_details". HINWEIS: PSSessions verwenden die Windows PowerShell-Remotinginfra struktur. Um PSSessions zu verwenden, müssen lokale Computer und Remotecomputer für Remoting konfiguriert werden. Weitere Informationen finden Sie unter "about_remote_requirements". Um unter Windows Vista und höheren Versionen von Windows eine PSSession auf dem lokalen Computer zu erstellen, müssen Sie Windows PowerShell mit der Option "Als Administrator ausführen" öffnen. WAS IST EINE SITZUNG? Eine Sitzung ist eine Umgebung, in der Windows PowerShell ausgeführt wird. Sobald Sie Windows PowerShell öffnen, wird eine Sitzung erstellt, und Sie können Befehle in der Sitzung ausführen. Sie können der Sitzung auch Elemente wie Module und Snap-Ins hinzufügen, 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 beendet wird. Ferner können Sie weitere Sitzungen auf dem lokalen Computer oder auf einem Remotecomputer erstellen, die als "Windows PowerShell-Sitzungen" oder "PSSessions" bezeichnet werden. Analog zur Standardsitzung können Sie Befehle in einer PSSession ausführen und Elemente erstellen und hinzufügen. Im Gegensatz zu der Sitzung, die automatisch gestartet wird, können Sie die selbst erstellen PSSessions jedoch steuern. Sie können abgerufen, erstellt, konfiguriert und entfernt werden, und mehrere Befehle können in einer PSSession ausgeführt werden. Die PSSession bleibt geöffnet und verfügbar, bis Sie diese aus der Sitzung löschen. In der Regel wird eine PSSession erstellt, 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 zur Unterstützung der Sitzung her. Wenn Sie mit dem computerName-Parameter des Cmdlet "Invoke-Command" oder des Cmdlet "Enter-PSSession" einen Remotebefehl ausführen oder eine interaktive Sitzung starten, erstellt Windows PowerShell eine temporäre Sitzung auf dem Remotecomputer und schließt die Sitzung, sobald der Befehl abgeschlossen oder die interaktive Sitzung beendet wird. Diese temporären Sitzungen können nicht gesteuert und maximal für einen Befehl oder eine interaktive Sitzung verwendet werden. In Windows PowerShell ist die "aktuelle Sitzung" die Sitzung, die Sie gerade verwenden. Eine "aktuelle Sitzung" kann jede Sitzung einschließlich einer temporären Sitzung oder einer PSSession sein. GRÜNDE FÜR DIE VERWENDUNG EINER PSSESSION Verwenden Sie eine PSSession, um eine dauerhafte Verbindung mit einem Remotecomputer herzustellen. Mit einer PSSession können Sie eine Reihe von Befehlen ausführen, die gemeinsame Daten verwenden, beispielsweise Werte von Variablen, Inhalte von Funktionen oder Definitionen von Aliasen. Sie können Remotebefehle ausführen, ohne eine PSSession zu erstellen. Führen Sie mit dem ComputerName-Parameter remotefähiger Cmdlets einen Befehl oder eine Reihe nicht verknüpfter Befehle auf einem oder mehreren Computern aus. Wenn Sie den ComputerName-Parameter von Invoke-Expression oder von Enter-PSSession verwenden, stellt Windows PowerShell eine temporäre Verbindung mit dem Remotecomputer her und schließt die Verbindung, sobald der Befehl abgeschlossen wird. Alle Datenelemente, die Sie erstellen, gehen verloren, wenn die Verbindung geschlossen wird. Andere Cmdlets wie Get-Eventlog und Get-WmiObject, die über einen ComputerName-Parameter verfügen, erfassen Daten mit anderen Remotingtechnologien. Dabei wird keine dauerhafte Verbindung wie bei einer PSSession erstellt. SO ERSTELLEN SIE EINE PSSESSION Das Cmdlet "New-PSSession" ermöglicht das Erstellen einer PSSession. Verwenden Sie den ComputerName-Parameter des Cmdlet "New-PSSession", um die PSSession auf einem Remotecomputer erstellen. Beispielsweise wird mit dem folgenden Befehl eine neue PSSession auf dem Computer "Server01" erstellt. new-pssession -computername Server01 Wenn Sie den Befehl senden, erstellt New-PSSession 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 die PSSession zu einem späteren Zeitpunkt mit einem Get-PSSession-Befehl abrufen. Beispielsweise wird mit dem folgenden Befehl eine neue PSSession auf dem Computer "Server01" erstellt, und das resultierende Objekt wird in der Variablen "$ps" gespeichert. $ps = new-pssession -computername Server01 SO ERSTELLEN SIE PSSESSIONS AUF MEHREREN COMPUTERN Um PSSessions auf mehreren Computern zu erstellen, verwenden Sie den ComputerName-Parameter des Cmdlet "New-PSSession." Geben Sie die Namen der Remotecomputer in einer durch Trennzeichen getrennten Liste ein. Geben Sie beispielsweise Folgendes ein, um PSSessions auf den Computern "Server01", "Server02" und "Server03" zu erstellen: new-PSSession -computername Server01, Server02, Server03 Mit New-PSSession wird eine PSSession auf jedem der Remotecomputer erstellt. SO RUFEN SIE PSSESSIONS AB Mit dem Cmdlet "Get-PSSession" können Sie die PSSessions abrufen, die in der aktuellen Sitzung erstellt wurden. Get-PSSession gibt den gleichen Objekttyp wie New-PSSession zurück. Mit dem folgenden Befehl werden alle PSSessions abgerufen, die in der aktuellen Sitzung erstellt wurden. get-PSSession In der Standardanzeige der PSSessions werden die ID sowie ein Standardanzeigename angezeigt. Wenn Sie die Sitzung erstellen, können Sie einen anderen 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. Mit dem folgenden Befehl werden die PSSessions abgerufen und in der Variablen "$ps123" gespeichert. $ps123 = get-PSSession Wenn Sie die PSSession-Cmdlets verwenden, können Sie anhand der ID, des Namens oder der Instanz-ID (eine GUID) auf eine PSSession verweisen. Mit dem folgenden Befehl wird eine PSSession anhand der ID abgerufen und in der Variablen "$ps01" gespeichert. $ps01 = get-PSSession -id 1 Mit Get-PSSession werden nur die PSSessions abgerufen, die in der aktuellen Sitzung erstellt wurden. PSSessions, die in anderen Sitzungen oder auf anderen Computern erstellt wurden, werden nicht abgerufen. Dies gilt auch dann, wenn die Sitzungen mit dem lokalen Computer verbunden sind und Befehle auf dem lokalen Computer ausführen. SO FÜHREN SIE BEFEHLE IN EINER PSSESSION AUS Mit dem Cmdlet "Invoke-Command" können Sie einen Befehl in einer oder mehreren PSSessions ausführen. Geben Sie die PSSessions mit dem Session-Parameter und den Befehl mit dem ScriptBlock-Parameter an. Geben Sie beispielsweise Folgendes ein, um einen Get-Childitem- Befehl ("dir") in jeder der drei PSSessions auszuführen, die in der Variablen "$ps123" gespeichert wurden: invoke-command -session $ps123 -scriptblock {get-childitem} SO LÖSCHEN SIE PSSESSIONS Verwenden Sie nach Abschluss der PSSession das Cmdlet "Remove-PSSession", um die PSSession zu löschen und die verwendeten Ressourcen freizugeben. remove-PSSession -session $ps - oder - remove-PSSession -id 1 Wenn Sie die PSSession nicht löschen, bleibt die PSSession geöffnet und verfügbar, bis Sie die aktuelle Sitzung oder Windows PowerShell schließen. Sie können auch mit dem TimeOut-Parameter von New-PSSession eine Ablaufzeit für eine PSSession im Leerlauf festlegen. Weitere Informationen erhalten Sie mit folgendem Befehl: "get-help new-PSSession -full". PSSESSION-CMDLETS New-PSSession Erstellt eine neue PSSession auf einem lokalen Computer oder auf einem Remotecomputer. Get-PSSession Ruft die PSSessions in der aktuellen Sitzung ab. Remove-PSSession Löscht die PSSessions in der aktuellen Sitzung. Enter-PSSession Startet eine interaktive Sitzung. Exit-PSSession Beendet eine interaktive Sitzung. Eine Liste von PSSession-Cmdlets erhalten Sie mit folgendem Befehl: get-help *-PSSession WEITERE INFORMATIONEN Weitere Informationen über PSSessions finden Sie unter "about_PSSession_details". SIEHE AUCH about_remote about_remote_requirements New-PSSession Get-PSSession Remove-PSSession Enter-PSSession Exit-PSSession Invoke-Command