about_Remote_Disconnected_Sessions

Letzte Aktualisierung: Mai 2014

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

THEMA

about_Remote_Disconnected_Session

KURZE BESCHREIBUNG

Erläuterung des Trennens von und erneuten Verbindens mit einer PSSession

LANGE BESCHREIBUNG

Seit Windows PowerShell® 3.0 können Sie die Verbindung mit einer PSSession trennen und sich zu einem späteren Zeitpunkt auf dem gleichen Computer oder einem anderen erneut mit ihr verbinden. Der Sitzungszustand wird beibehalten, und Befehle in der PSSession werden weiterhin ausgeführt, während die Verbindung mit der Sitzung getrennt ist.

Das „Getrennte Sitzungen“-Feature ist nur verfügbar, wenn der Computer auf der Remoteseite der Verbindung Windows PowerShell 3.0 oder eine höhere Version von Windows PowerShell ausführt.

Mit dem „Getrennte Sitzungen“-Feature können Sie die Sitzung schließen, in der eine PSSession erstellt wurde, und sogar Windows PowerShell schließen, sowie den Computer herunterfahren, ohne die Ausführung von Befehlen in der PSSession zu unterbrechen. Dies ist besonders nützlich zum Ausführen von Befehlen, die längere Zeit in Anspruch nehmen, und bietet die Flexibilität bei Zeitaufwand und Geräteeinsatz, die IT-Spezialisten wünschen.

HINWEIS: Sie können sich nicht von einer interaktiven Sitzung trennen, die mit dem Enter-PSSession-Cmdlet gestartet wird.

Mit „Getrennte Sitzungen“ können Sie PSSessions verwalten, die infolge eines Computer- oder Netzwerkausfalls versehentlich getrennt wurden.

In der realen Welt können Sie mit dem „Getrennte Sitzungen“-Feature beginnen, ein Problem zu lösen, Ihre Aufmerksamkeit auf ein Problem mit höherer Priorität richten und dann die Arbeit an der Lösung fortsetzen, und zwar auch auf einem anderen Computer an einem anderen Standort.

„GETRENNTE SITZUNGEN“-CMDLETS

Die folgenden Cmdlets unterstützen das „Getrennte Sitzungen“-Feature:

  • Disconnect-PSSession:

    Trennt eine PSSession.

  • Connect-PSSession:

    Stellt die Verbindung mit einer getrennten PSSession wieder her.

  • Receive-PSSession:

    Ruft die Ergebnisse von Befehlen ab, die in getrennten Sitzungen ausgeführt wurden.

  • Get-PSSession:

    Ruft PSSessions auf dem lokalen Computer oder auf Remotecomputern ab.

  • Invoke-Command:

    InDisconnectedSession-Parameter erstellt eine PSSession und trennt sie sofort.

FUNKTIONSWEISE DES „GETRENNTE SITZUNGEN“-FEATURES

Seit Windows PowerShell 3.0 sind PSSessions unabhängig von den Sitzungen, in denen sie erstellt wurden. Aktive PSSessions werden auf dem Remotecomputer oder der "Serverseite" der Verbindung verwaltet, auch wenn die Sitzung, in der die PSSession erstellt wurde, geschlossen und der Ursprungscomputer heruntergefahren oder vom Netzwerk getrennt wird.

In Windows PowerShell 2.0 wird die PSSession nach der Trennung von der ursprünglichen Sitzung, oder wenn die Sitzung endet, in der sie erstellt wurde, vom Remotecomputer gelöscht.

Wenn Sie eine PSSession trennen, bleibt die PSSession aktiv und wird auf dem Remotecomputer verwaltet. Der Sitzungsstatus ändert sich von „Running“ (Ausführung) zu „Disconnected“ (Getrennt). Sie können die Verbindung mit einer getrennten PSSession von der aktuellen Sitzung oder einer anderen Sitzung auf dem gleichen bzw. einem anderen Computer aus wiederherstellen. Der Remotecomputer, der die Sitzung verwaltet, muss ausgeführt werden und mit dem Netzwerk verbunden sein.

Befehle in einer getrennten PSSession werden weiterhin ununterbrochen auf dem Remotecomputer ausgeführt, bis der Befehl abgeschlossen oder der Ausgabepuffer gefüllt ist. Um zu verhindern, dass ein voller Ausgabepuffer einen Befehl anhält, verwenden Sie den OutputBufferingMode-Parameter der Cmdlets „Disconnect-PSSession“, „New-PSSessionOption“ oder „New-PSTransportOption“.

Getrennte Sitzungen werden im Getrenntstatus auf dem Remotecomputer verwaltet. Sie stehen für eine Wiederherstellung der Verbindung zu Verfügung, bis Sie die PSSession löschen, z. B. mit dem Cmdlet „Remove-PSSession“, oder bis das Leerlaufzeitlimit der PSSession abläuft. Sie können das Leerlaufzeitlimit einer PSSession mit dem IdleTimeoutSec- oder IdleTimeout-Parameter der Cmdlets „Disconnect-PSSession“, „New-PSSessionOption“ oder „New-PSTransportOption“ anpassen.

Andere Benutzer können sich mit den PSSessions verbinden, die Sie erstellt haben, aber nur dann, wenn sie die Anmeldeinformationen angeben können, die zum Erstellen der Sitzung verwendet wurden, oder die RunAs-Anmeldeinformationen der Sitzungskonfiguration verwenden.

ABRUFEN VON PSSESSIONS

Seit Windows PowerShell 3.0 ruft das Cmdlet „Get-PSSession“ PSSessions auf dem lokalen Computer und Remotecomputern ab. Es kann auch PSSessions abrufen, die in der aktuellen Sitzung erstellt wurden.

Um PSSessions auf dem lokalen Computer oder Remotecomputern abzurufen, verwenden Sie den ComputerName- oder ConnectionUri-Parameter. Ohne Parameter ruft „Get-PSSession“ PSSessions ab, die in der lokalen Sitzung erstellt wurden, unabhängig davon, wo sie beendet wurden.

Denken Sie beim Abrufen von PSSessions daran, sie auf dem Computer zu suchen, auf dem sie verwaltet werden, d. h. dem Remote- oder „serverseitigen“ Computer.

Wenn Sie z. B. eine PSSession auf dem Computer „Server01“ erstellen, rufen Sie die Sitzung vom Computer „Server01“ ab. Wenn Sie eine PSSession von einem anderen Computer auf dem lokalen Computer erstellen, rufen Sie die Sitzung vom lokalen Computer ab.

Die folgende Befehlssequenz zeigt die Funktionsweise von „Get-PSSession“.

Der erste Befehl erstellt eine Sitzung auf dem Computer „Server01“. Die Sitzung befindet sich auf dem Computer „Server01“.

      PS C:\ps-test> New-PSSession -ComputerName Server01

      Id Name            ComputerName    State         ConfigurationName     Availability
      -- ----            ------------    -----         -----------------     ------------
       2 Session2        Server01        Opened        Microsoft.PowerShell     Available

Um die Sitzung abzurufen, verwenden Sie den ComputerName-Parameter von „Get-PSSession“ mit dem Wert „Server01“.

      PS C:\ps-test> Get-PSSession -ComputerName Server01

      Id Name            ComputerName    State         ConfigurationName     Availability
      -- ----            ------------    -----         -----------------     ------------
       2 Session2        Server01        Opened        Microsoft.PowerShell     Available

Wenn der Parameter „ComputerName“ von „Get-PSSession“ den Wert „localhost“ hat, ruft „Get-PSSession“ PSSessions ab, die auf dem lokalen Computer beendet und dort verwaltet werden. Es ruft PSSessions auf dem Computer „Server01“ auch dann nicht ab, wenn sie auf dem lokalen Computer gestartet wurden.

      PS C:\ps-test> Get-PSSession -ComputerName localhost
      PS C:\ps-test>

Verwenden Sie das Cmdlet „Get-PSSession“ ohne Parameter, um Sitzungen abzurufen, die in der aktuellen Sitzung erstellt wurden. Dieser Befehl ruft die PSSession ab, die in der aktuellen Sitzung erstellt wurde, und stellt eine Verbindung mit dem Computer „Server01“ her.

PS C:\ps-test> Get-PSSession

      Id Name            ComputerName    State         ConfigurationName     Availability
      -- ----            ------------    -----         -----------------     ------------
       2 Session2        Server01        Opened        Microsoft.PowerShell     Available

TRENNEN VON SITZUNGEN

Um eine PSSession zu trennen, verwenden Sie das Cmdlet „Disconnect-PSSession“. Um die PSSession zu identifizieren, verwenden Sie den Session-Parameter, oder leiten Sie eine PSSession von Cmdlet „New-PSSession“ oder „Get-PSSession“ zu „Disconnect-PSSession“.

Der folgende Befehl trennt die PSSession auf dem Computer „Server01“. Beachten Sie, dass die Eigenschaft „State“ (Status) den Wert „Disconnected“ (Getrennt) hat und „Availability“ (Verfügbarkeit) auf „None“ (Keine) gesetzt ist.

     PS C:\> Get-PSSession -ComputerName Server01 | Disconnect-PSSession

     Id Name            ComputerName    State         ConfigurationName     Availability
     -- ----            ------------    -----         -----------------     ------------
      2 Session2        Server01        Disconnected  Microsoft.PowerShell          None

Um eine getrennte Sitzung zu erstellen, verwenden Sie den InDisconnectedSession-Parameter des Invoke-Command-Cmdlets. Es wird eine Sitzung erstellt, der Befehl gestartet und sofort getrennt, bevor der Befehl eine Ausgabe zurückgeben kann.

Der folgende Befehl führt einen Get-WinEvent-Befehl in einer getrennten Sitzung auf dem Remotecomputer „Server02“ aus.

     PS C:\> Invoke-Command -ComputerName Server02 -InDisconnectedSession `
             -ScriptBlock {Get-WinEvent -LogName "Windows PowerShell"} 

     Id Name            ComputerName    State         ConfigurationName     Availability
     -- ----            ------------    -----         -----------------     ------------
      4 Session3        Server02        Disconnected  Microsoft.PowerShell          None

HERSTELLEN EINER VERBINDUNG MIT GETRENNTEN SITZUNGEN

Sie können aus der Sitzung, in der Sie die PSSession erstellt haben, oder aus anderen Sitzungen auf dem lokalen Computer oder anderen Computern eine Verbindung mit allen verfügbaren getrennten PSSessions herstellen.

Sie können eine PSSession erstellen, Befehle in der PSSession ausführen, die Verbindung mit der PSSession trennen, Windows PowerShell schließen und den Computer herunterfahren. Stunden später können Sie einen anderen Computer starten, die PSSession abrufen, die Verbindung mit ihr herstellen und die Ergebnisse von Befehlen abrufen, die in der PSSession ausgeführt wurden, während sie getrennt war. Anschließend können Sie weitere Befehle in der Sitzung ausführen.

Um eine Verbindung mit einer getrennten PSSession herzustellen, verwenden Sie das Connect-PSSession-Cmdlet. Verwenden Sie den ComputerName- oder ConnectionUri-Parameter, um die PSSession zu identifizieren, oder leiten Sie eine PSSession von „Get-PSSession“ zu „Connect-PSSession“.

Der folgende Befehl ruft die Sitzungen auf dem Computer „Server02“ ab. Die Ausgabe umfasst zwei getrennte Sitzungen, die beide verfügbar sind.

     PS C:\> Get-PSSession -ComputerName Server02

     Id Name            ComputerName    State         ConfigurationName     Availability
     -- ----            ------------    -----         -----------------     ------------
      2 Session2        juneb-srv8320   Disconnected  Microsoft.PowerShell          None
      4 Session3        juneb-srv8320   Disconnected  Microsoft.PowerShell          None

Der folgende Befehl stellt eine Verbindung mit „Session2“ her. Der PSSession ist jetzt geöffnet und verfügbar.

     PS C:> Connect-PSSession -ComputerName Server02 -Name Session2


     Id Name            ComputerName    State         ConfigurationName     Availability
     -- ----            ------------    -----         -----------------     ------------
      2 Session2        juneb-srv8320   Opened        Microsoft.PowerShell     Available

ABRUFEN DER ERGEBNISSE

Um die Ergebnisse von Befehlen abzurufen, die in einer getrennten PSSession ausgeführt wurden, verwenden Sie das Receive-PSSession-Cmdlet.

Sie können „Receive-PSSession“ zusätzlich zu dem Connect-PSSession-Cmdlet oder an dessen Stelle verwenden. Wenn die Sitzung bereits wieder verbunden ist, ruft „Receive-PSSession“ die Ergebnisse von Befehlen ab, die ausgeführt wurden, als die Sitzung getrennt war. Wenn die PSSession immer noch getrennt ist, stellt „Receive-PSSession“ die Verbindung zu ihr her, und ruft dann die Ergebnisse von Befehlen ab, die ausgeführt wurden, während die Sitzung vom Netzwerk getrennt war.

„Receive-PSSession“ kann die Ergebnisse in einem Auftrag (asynchron) oder an das Hostprogramm (synchron) zurückgeben. Verwenden Sie den Parameter „OutTarget“ zur Auswahl von „Job“ (Auftrag) oder „Host“. „Host“ ist der Standardwert. Wenn der Befehl, der empfangen wird, in der aktuellen Sitzung als Auftrag gestartet wurde, wird er jedoch standardmäßig als Auftrag zurückgegeben.

Der folgende Befehl verwendet das Receive-PSSession-Cmdlet zum Herstellen einer Verbindung mit der PSSession auf dem Computer „Server02“ und Abrufen der Ergebnisse des Befehls „Get-WinEvent“, der in der Sitzung „Session3“ ausgeführt wurde. Der Befehl verwendet den OutTarget-Parameter, um die Ergebnisse in einem Auftrag abzurufen.

      PS C:\> Receive-PSSession  -ComputerName Server02 -Name Session3 -OutTarget Job

      Id     Name            PSJobTypeName   State         HasMoreData     Location
      --     ----            -------------   -----         -----------     --------
      3      Job3            RemoteJob       Running       True            Server02

Zum Abrufen der Auftragsergebnisse verwenden Sie das Cmdlet Receive-Job.

      PS C:\ps-test> Get-Job | Receive-Job -Keep


          ProviderName: PowerShell

     TimeCreated             Id LevelDisplayName Message     PSComputerName                                                       
     -----------             -- ---------------- -------     --------------                                                       
     5/14/2012 7:26:04 PM   400 Information      Engine stat Server02                                                        
     5/14/2012 7:26:03 PM   600 Information      Provider "W Server02                                                        
     5/14/2012 7:26:03 PM   600 Information      Provider "C Server02                                                        
     5/14/2012 7:26:03 PM   600 Information      Provider "V Server02                                                        

„STATE“ (STATUS) UND „AVAILABILITY“ (VERFÜGBARKEIT)

Die Eigenschaften „State“ und „Availability“ einer getrennten PSSession teilen Ihnen mit, ob Sie die Verbindung mit der Sitzung wiederherstellen können.

Wenn eine PSSession mit der aktuellen Sitzung verbunden ist, ist ihr Status „Opened“ (Geöffnet), und die Verfügbarkeit ist auf „Available“ (Verfügbar) gesetzt. Wenn Sie die Verbindung mit der PSSession trennen, hat sie den Status „Disconnected“ (Getrennt) und die „Availability“ „None“ (Keine).

Der Wert der State-Eigenschaft ist jedoch relativ zur aktuellen Sitzung. Aus diesem Grund bedeutet „Disconnected“, dass die PSSession nicht mit der aktuellen Sitzung verbunden ist. Allerdings bedeutet dies nicht, dass die PSSession von allen Sitzungen getrennt ist. Sie kann mit einer anderen Sitzung verbunden sein.

Um festzustellen, ob die Verbindung bzw. Verbindungswiederherstellung mit der PSSession möglich ist, verwenden Sie die Availability-Eigenschaft. Der Availability-Wert „None“ gibt an, dass Sie eine Verbindung mit der Sitzung herstellen können. Der Wert „Busy“ (Belegt) gibt an, dass Sie keine Verbindung mit der PSSession herstellen können, da sie mit einer anderen Sitzung verbunden ist.

Das folgende Beispiel wird in zwei Sitzungen (Windows PowerShell-Konsolenfenster) auf dem gleichen Computer ausgeführt. Beachten Sie die sich ändernden Werte für die Eigenschaften „State“ und „Availability“ in jeder Sitzung, während die PSSession getrennt und erneut verbunden wird.

         #Session 1:
         PS C:\> New-PSSession -ComputerName Server30 -Name Test

         Id Name       ComputerName    State         ConfigurationName     Availability
         -- ----       ------------    -----         -----------------     ------------
         1  Test       Server30        Opened        Microsoft.PowerShell     Available

         #Session 2: 
         PS C:\> Get-PSSession -ComputerName Server30 -Name Test

         Id Name       ComputerName    State         ConfigurationName     Availability
         -- ----       ------------    -----         -----------------     ------------
         1 Test        Server30        Disconnected  Microsoft.PowerShell          Busy



         #Session 1
         PS C:\> Get-PSSession -ComputerName Server30 -Name Test | Disconnect-PSSession

         Id Name       ComputerName    State         ConfigurationName     Availability
         -- ----       ------------    -----         -----------------     ------------
          1 Test       Server30        Disconnected  Microsoft.PowerShell          None

         #Session 2
         PS C:\> Get-PSSession -ComputerName Server30 

         Id Name       ComputerName    State         ConfigurationName     Availability
         -- ----       ------------    -----         -----------------     ------------
          1 Test       Server30        Disconnected  Microsoft.PowerShell          None



         #Session 2
         PS C:\> Connect-PSSession -ComputerName Server01 -Name Test

         Id Name       ComputerName    State         ConfigurationName     Availability
         -- ----       ------------    -----         -----------------     ------------
         3 Test        Server30        Opened        Microsoft.PowerShell     Available

         #Session 1
         PS C:\> Get-PSSession -ComputerName Server30 

         Id Name       ComputerName    State         ConfigurationName     Availability
         -- ----       ------------    -----         -----------------     ------------
          1 Test       Server30        Disconnected  Microsoft.PowerShell          Busy

LEERLAUFZEITLIMIT

Getrennte Sitzungen werden auf dem Remotecomputer verwaltet, bis Sie sie löschen, z. B. mit dem Remove-PSSession-Cmdlet, oder ihr Zeitlimit abläuft. Die IdleTimeout-Eigenschaft (Leerlaufzeitlimit) einer PSSession bestimmt, wie lange eine getrennte Sitzung verwaltet wird, bevor sie gelöscht wird.

PSSessions sind im Leerlauf, wenn der „Taktthread“ keine Antwort erhält. Durch die Trennung wird eine Sitzung in den Leerlauf gesetzt und die Leerlaufzeitlimit-Uhr gestartet, auch dann, wenn in der getrennten Sitzung noch Befehle ausgeführt werden. Windows PowerShell betrachtet getrennte Sitzungen als aktiv, aber im Leerlauf befindlich.

Überprüfen Sie beim Erstellen und Trennen von Sitzungen, ob das Leerlaufzeitlimit in der PSSession lang genug ist, um die Sitzung für Ihre Bedürfnisse beizubehalten, aber nicht so lang, dass unnötig Ressourcen auf dem Remotecomputer in Anspruch genommen werden.

Die IdleTimeoutMs-Eigenschaft der Sitzungskonfiguration bestimmt das standardmäßige Leerlaufzeitlimit von Sitzungen, die die Sitzungskonfiguration verwenden. Sie können den Standardwert überschreiben, aber der Wert, den Sie verwenden, darf die MaxIdleTimeoutMs-Eigenschaft der Sitzungskonfiguration nicht überschreiten.

Um die Werte von „IdleTimeoutMs“ und „MaxIdleTimeoutMs“ einer Sitzungskonfiguration zu ermitteln, verwenden Sie das folgende Befehlsformat.

      Get-PSSessionConfiguration | Format-Table Name, IdleTimeoutMs, MaxIdleTimeoutMs

Sie können bei der Erstellung einer PSSession und beim Trennen der Verbindung den Standardwert in der Sitzungskonfiguration überschreiben und das Leerlaufzeitlimit einen PSSession festlegen.

Wenn Sie auf dem Remotecomputer ein Mitglied der Gruppe „Administratoren“ sind, können Sie die Eigenschaften „IdleTimeoutMs“ und „MaxIdleTimeoutMs“ von Sitzungskonfigurationen auch erstellen und ändern.

HINWEISE:

Der Wert des Leerlaufzeitlimits von Sitzungskonfigurationen und Sitzungsoptionen wird in Millisekunden angegeben. Der Wert des Leerlaufzeitlimits von Sitzungen und Sitzungskonfigurationsoptionen wird in Sekunden angegeben.

Sie können das Leerlaufzeitlimit einer PSSession bei der Erstellung der PSSession festlegen („New-PSSession“, „Invoke-Command“), und wenn Sie die Verbindung mit ihr trennen („Disconnect-PSSession“). Sie können den IdleTimeout-Wert jedoch nicht ändern, wenn Sie die Verbindung mit der PSSession herstellen („Connect-PSSession“) oder Ergebnisse abrufen („Receive-PSSession“).

Das Connect-PSSession- und Receive-PSSession-Cmdlet besitzen einen SessionOption-Parameter, der ein SessionOption-Objekt entgegennimmt, das z. B. durch das Cmdlet "New-PSSessionOption" zurückgegeben wurde. Der IdleTimeout-Wert im SessionOption-Objekt und der IdleTimeout-Wert in der Einstellungsvariablen „$PSSessionOption“ ändern jedoch nicht den Wert von „IdleTimeout“ der PSSession in einem Connect-PSSession- oder Receive-PSSession-Befehl.

– Um eine PSSession mit einem bestimmten Leerlaufzeitlimit-Wert zu erstellen, erstellen Sie eine $PSSessionOption-Einstellungsvariable. Legen Sie den gewünschten Wert der Eigenschaft „IdleTimeout“ (in Millisekunden) fest.

Beim Erstellen von PSSessions haben die Werte der Variablen „$PSSessionOption“ Vorrang vor den Werten in der Sitzungskonfiguration.

Dieser Befehl setzt z. B. ein Leerlaufzeitlimit von 48 Stunden fest.

PS C:\> $PSSessionOption = New-PSSessionOption -IdleTimeoutMSec 172800000

– Um eine PSSession mit einem bestimmten Leerlaufzeitlimit-Wert zu erstellen, verwenden Sie den IdleTimeoutMSec-Parameter des Cmdlets „New-PSSessionOption“. Verwenden Sie dann die Sitzungsoption im Wert des Parameters „SessionOption“ des New-PSSession- oder Invoke-Command-Cmdlets.

Die beim Erstellen der Sitzung festgelegten Werte haben Vorrang vor den Werten, die in der $PSSessionOption-Einstellungsvariablen und der Sitzungskonfiguration festgelegt werden.

Zum Beispiel:

         PS C:\> $o = New-PSSessionOption -IdleTimeoutMSec 172800000 
         PS C:\> New-PSSession -SessionOption $o

– Um das Leerlaufzeitlimit einer PSSession beim Trennen der Verbindung zu ändern, verwenden Sie den IdleTimeoutSec-Parameter des Disconnect-PSSession-Cmdlets.

Zum Beispiel:

         PS C:\> Disconnect-PSSession -IdleTimeoutSec 172800

– Um eine Sitzungskonfiguration mit einem bestimmten und maximalem Leerlaufzeitlimit zu erstellen, verwenden Sie den IdleTimeoutSec- und MaxIdleTimeoutSec-Parameter des Cmdlets „New-PSTransportOption“. Verwenden Sie dann die Transportoption im Wert des Parameters „TransportOption“ von „Register-PSSessionConfiguration“.

Zum Beispiel:

         PS C:\> $o = New-PSTransportOption -IdleTimeoutSec 172800 -MaxIdleTimeoutSec 259200 
         PS C:\> Register-PSSessionConfiguration -Name Test -TransportOption $o

– Um das Standard-Leerlaufzeitlimit und maximale Leerlaufzeitlimit einer Sitzungskonfiguration zu ändern, verwenden Sie den IdleTimeoutSec- und MaxIdleTimeoutSec-Parameter des Cmdlets „New-PSTransportOption“. Verwenden Sie dann die Transportoption im Wert des Parameters „TransportOption“ von „Set-PSSessionConfiguration“.

Zum Beispiel:

         PS C:\> $o = New-PSTransportOption -IdleTimeoutSec 172800 -MaxIdleTimeoutSec 259200
         PS C:\> Set-PSSessionConfiguration -Name Test -TransportOption $o

AUSGABEPUFFERMODUS

Der Ausgabepuffermodus einer PSSession bestimmt, wie die Befehlsausgabe verwaltet wird, wenn der Ausgabepuffer der PSSession voll ist.

In einer getrennten Sitzung bestimmt der Ausgabepuffermodus, ob der Befehl weiterhin ausgeführt wird, während die Sitzung getrennt ist.

Gültige Werte:

    -- Block: When the output buffer is full, execution is suspended
              until the buffer is clear.

    -- Drop:  When the output buffer is full, execution continues. 
              As new output is generated, the oldest output is
              discarded.

„Block“ (Blockieren), der Standardwert, behält Daten bei, könnte aber den Befehl unterbrechen.

Beim Wert „Drop“ (Verwerfen) kann der Befehl abgeschlossen werden, obwohl Daten verloren gehen könnten. Bei Verwendung des Werts „Drop“ wird die Befehlsausgabe an eine Datei auf dem Datenträger umgeleitet. Dieser Wert wird für getrennte Sitzungen empfohlen.

Die OutputBufferingMode-Eigenschaft der Sitzungskonfiguration bestimmt den standardmäßigen Ausgabepuffermodus von Sitzungen, die die Sitzungskonfiguration verwenden.

Um den Wert von „OutputBufferingMode“ einer Sitzungskonfiguration zu ermitteln, verwenden Sie die folgenden Befehlsformate.

      (Get-PSSessionConfiguration <ConfigurationName>).OutputBufferingMode

    -or-

      Get-PSSessionConfiguration | Format-Table Name, OutputBufferingMode

Sie können den Standardwert in der Sitzungskonfiguration überschreiben und den Ausgabepuffermodus einer PSSession festlegen, wenn Sie eine PSSession erstellen, wenn Sie die Verbindung trennen, und wenn Sie erneut eine Verbindung herstellen.

Wenn Sie auf dem Remotecomputer ein Mitglied der Gruppe „Administratoren“ sind, können Sie den Ausgabepuffermodus von Sitzungskonfigurationen auch erstellen und ändern.

– Um eine PSSession mit dem Ausgabepuffermodus „Drop“ zu erstellen, erstellen Sie eine $PSSessionOption-Einstellungsvariable, in der die Eigenschaft „OutputBufferingMode“ den Wert „Drop“ hat.

Beim Erstellen von PSSessions haben die Werte der Variablen „$PSSessionOption“ Vorrang vor den Werten in der Sitzungskonfiguration.

Zum Beispiel:

         PS C:\> $PSSessionOption = New-PSSessionOption -OutputBufferingMode Drop

– Um eine PSSession mit dem Ausgabepuffermodus „Drop“ zu erstellen, verwenden Sie den OutputBufferingMode-Parameter des Cmdlets „New-PSSessionOption“, um eine Sitzungsoption mit dem Wert „Drop“ zu erstellen. Verwenden Sie dann die Sitzungsoption im Wert des Parameters „SessionOption“ des New-PSSession- oder Invoke-Command-Cmdlets.

Die beim Erstellen der Sitzung festgelegten Werte haben Vorrang vor den Werten, die in der $PSSessionOption-Einstellungsvariablen und der Sitzungskonfiguration festgelegt werden.

Zum Beispiel:

         PS C:\> $o = New-PSSessionOption -OutputBufferingMode Drop
         PS C:\> New-PSSession -SessionOption $o

– Um den Ausgabepuffermodus einer PSSession zu ändern, wenn die Verbindung getrennt wird, verwenden Sie den OutputBufferingMode-Parameter des Disconnect-PSSession-Cmdlets.

Zum Beispiel:

         PS C:\> Disconnect-PSSession -OutputBufferingMode Drop

– Um den Ausgabepuffermodus einer PSSession zu ändern, wenn die Verbindung wiederhergestellt wird, verwenden Sie den OutputBufferingMode-Parameter des New-PSSessionOption-Cmdlets. Verwenden Sie dann die Sitzungsoption im Wert des Parameters „SessionOption“ von „Connect-PSSession“ oder „Receive-PSSession“.

Zum Beispiel:

         PS C:\> $o = New-PSSessionOption -OutputBufferingMode Drop
         PS C:\> Connect-PSSession -Cn Server01 -Name Test -SessionOption $o

– Um eine Sitzungskonfiguration mit dem standardmäßigen Ausgabepuffermodus „Drop“ zu erstellen, verwenden Sie den OutputBufferingMode-Parameter des Cmdlets „New-PSTransportOption“, um ein Transportoptionsobjekt mit dem Wert „Drop“ zu erstellen. Verwenden Sie dann die Transportoption im Wert des Parameters „TransportOption“ von „Register-PSSessionConfiguration“.

Zum Beispiel:

PS C:\> $o = New-PSTransportOption -OutputBufferingMode Drop PS C:\> Register-PSSessionConfiguration -Name Test -TransportOption $o

– Um den standardmäßigen Ausgabepuffermodus einer Sitzungskonfiguration zu ändern, verwenden Sie den OutputBufferingMode-Parameter des Cmdlets „New-PSTransportOption“, um eine Transportoption mit dem Wert „Drop“ zu erstellen. Verwenden Sie dann die Transportoption im Wert des Parameters „SessionOption“ von „Set-PSSessionConfiguration“.

Zum Beispiel:

         PS C:\> $o = New-PSTransportOption -OutputBufferingMode Drop
         PS C:\> Set-PSSessionConfiguration -Name Test -TransportOption $o

TRENNEN DER LOOPBACKSITZUNGEN

„Loopback-Sitzungen“ oder „lokale Sitzungen“ sind PSSessions, die auf dem gleichen Computer erzeugt und beendet werden. Wie andere PSSessions werden aktive Loopbacksitzungen auf dem Computer verwaltet, der sich auf der Remoteseite der Verbindung befindet (dem lokalen Computer), sodass Sie die Verbindung mit Loopbacksitzungen trennen und sich erneut mit Loopbacksitzungen verbinden können.

Standardmäßig werden Loopbacksitzungen mit einem Netzwerksicherheitstoken erstellt, das in der Sitzung ausgeführten Befehlen keinen Zugriff auf andere Computer erlaubt. Sie können eine Verbindung mit Loopbacksitzungen mit Netzwerksicherheitstoken von jeder Sitzung auf dem lokalen oder Remotecomputer aus wiederherstellen.

Wenn Sie jedoch den EnableNetworkAccess-Parameter des New-PSSession-, Enter-PSSession- oder Invoke-Command-Cmdlets verwenden, wird die Loopbacksitzung mit einem interaktiven Sicherheitstoken erstellt. Mit dem interaktiven Token können in der Loopbacksitzung ausgeführte Befehle Daten von anderen Computern abrufen.

Sie können Loopbacksitzungen mit interaktiven Token trennen und die Verbindung anschließend von der gleichen oder einer anderen Sitzung auf dem gleichen Computer aus wiederherstellen. Allerdings können Sie, um böswillige Zugriffe zu verhindern, Verbindungen mit Loopbacksitzungen mit interaktiven Token nur von dem Computer aus wiederherstellen, auf dem sie erstellt wurden.

WARTEN AUF AUFTRÄGE IN GETRENNTEN SITZUNGEN

Das Cmdlet „Wait-Job“ wartet, bis ein Auftrag abgeschlossen ist, und kehrt dann zur Befehlszeile oder dem nächsten Befehl zurück. Standardmäßig gibt „Wait-Job“ zurück, ob die Sitzung, in der ein Auftrag ausgeführt wird, getrennt ist. Um das Cmdlet „Wait-Job“ anzuweisen, zu warten, bis die Verbindung mit der Sitzung wiederhergestellt ist (im Status „Opened“), verwenden Sie den Force-Parameter. Weitere Informationen finden Sie unter „Wait-Job“.

STABILE SITZUNGEN UND UNBEABSICHTIGTE VERBINDUNGSTRENNUNG

Gelegentlich könnte die Verbindung mit einer PSSession wegen eines Computer- oder Netzwerkausfalls unbeabsichtigt getrennt werden. Windows PowerShell versucht, die PSSession wiederherzustellen, der Erfolg hängt jedoch von Schweregrad und Dauer der Ursache ab.

Der Status einer unbeabsichtigt getrennten PSSession könnte „Broken“ (Fehlerhaft) oder „Closed“ (Geschlossen), jedoch auch „Disconnected“ (Getrennt) sein. Wenn „State“ den Wert „Disconnected“ hat, können Sie zum Verwalten der PSSession die gleichen Techniken verwenden wie beim absichtlichen Trennen der Verbindung mit der Sitzung. Beispielsweise können Sie das Connect-PSSession-Cmdlet verwenden, um die Verbindung mit der Sitzung wiederherzustellen, und das Receive-PSSession-Cmdlet, um die Ergebnisse von Befehlen abzurufen, die ausgeführt wurden, während die Sitzung getrennt war.

Wenn Sie die Sitzung schließen (beenden), in der eine PSSession erstellt wurde, während Befehle in der PSSession ausgeführt wurden, verwaltet Windows PowerShell die PSSession im Status „Disconnected“ auf dem Remotecomputer. Wenn Sie die Sitzung schließen (beenden), in der eine PSSession erstellt wurde, aber keine Befehle in der PSSession ausgeführt wurden, versucht Windows PowerShell nicht, die PSSession zu verwalten.

SCHLÜSSELWÖRTER

about_Disconnected_Sessions

SIEHE AUCH

about_Jobs

about_Remote

about_Remote_Variables

about_PSSessions

about_Session_Configurations

Disconnect-PSSession

Connect-PSSession

Get-PSSession

Receive-PSSession

Invoke-Command