about_Remote_Disconnected_Sessions

Kurze Beschreibung

Erläutert, wie Sie die Verbindung mit einer PowerShell-Sitzung (PSSession) trennen und erneut herstellen.

Lange Beschreibung

Ab PowerShell 3.0 können Sie die Verbindung von einer PSSession trennen und die Verbindung mit der PSSession von demselben Computer oder einem anderen Computer erneut herstellen. Der Sitzungszustand ist Standard tained und Befehle in der PSSession werden weiterhin ausgeführt, während die Sitzung getrennt ist.

Mit dem Feature "Getrennte Sitzungen" können Sie die Sitzung schließen, in der eine PSSession erstellt und heruntergefahren wurde, ohne die Ausführung von Befehlen in der Remote-PSSession zu unterbrechen. Getrennte Sitzungen sind nützlich für die Ausführung von Befehlen, die eine längere Zeit dauern.

Sie können keine Verbindung mit einer interaktiven Sitzung trennen, die mit dem Enter-PSSession Cmdlet gestartet wurde.

Sie können getrennte Sitzungen verwenden, um PSSessions zu verwalten, die unbeabsichtigt als Ergebnis eines Computer- oder Netzwerkausfalls getrennt wurden.

Getrennte Sitzungs-Cmdlets

Die folgenden Cmdlets unterstützen das Feature "Getrennte Sitzungen":

  • Connect-PSSession: Verbinden einer getrennten PSSession.
  • Disconnect-PSSession: Trennt eine PSSession.
  • Get-PSSession: Ruft PSSessions auf dem lokalen Computer oder auf Remotecomputern ab.
  • Receive-PSSession: Ruft die Ergebnisse von Befehlen ab, die in getrennten Sitzungen ausgeführt wurden.
  • Invoke-Command: Der Parameter InDisconnectedSession erstellt eine PSSession und trennt sofort.

Funktionsweise der Funktion "Getrennte Sitzungen"

Ab PowerShell 3.0 sind PSSessions unabhängig von den Sitzungen, in denen sie erstellt werden. Aktive PSSessions werden auf dem Remotecomputer oder der Serverseite der Verbindung Standard gespeichert, auch wenn der clientseitige Computer heruntergefahren oder vom Netzwerk getrennt wird.

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

Wenn Sie eine PSSession trennen, wird die PSSession aktiv Standard und auf dem Remotecomputer Standard. Der Sitzungsstatus wechselt von " Läuft" in "Getrennt". Sie können die Verbindung mit einer getrennten PSSession erneut herstellen.

  • Die aktuelle Sitzung auf demselben Computer
  • Eine andere Sitzung auf demselben Computer
  • Von einer Sitzung auf einem anderen Computer

Der Remotecomputer, auf dem die Sitzung Standard enthalten ist, muss ausgeführt und mit dem Netzwerk verbunden sein.

Befehle in einer getrennten PSSession werden weiterhin unterbrechungsfrei auf dem Remotecomputer ausgeführt, bis der Befehl abgeschlossen ist oder der Ausgabepuffer gefüllt wird. Um zu verhindern, dass ein vollständiger Ausgabepuffer einen Befehl angehalten, verwenden Sie den OutputBufferingMode-Parameter der Disconnect-PSSession, New-PSSessionOptionoder New-PSTransportOption Cmdlets.

Getrennte Sitzungen werden im getrennten Zustand auf dem Remotecomputer Standard beibehalten. Sie sind für Sie verfügbar, um eine erneute Verbindung herzustellen, bis Sie die PSSession löschen, z. B. mithilfe des Remove-PSSession Cmdlets, oder bis das Leerlauftimeout der PSSession abläuft. Sie können das Leerlauftimeout einer PSSession anpassen, indem Sie die Parameter "IdleTimeoutSec " oder "IdleTimeout " der Disconnect-PSSessionOder New-PSSessionOptionCmdlets verwenden New-PSTransportOption .

Ein anderer Benutzer kann eine Verbindung mit von Ihnen erstellten PSSessions herstellen, aber nur, wenn er die Anmeldeinformationen angeben kann, die zum Erstellen der Sitzung verwendet wurden, oder die RunAs Anmeldeinformationen der Sitzungskonfiguration verwenden.

So erhalten Sie PSSessions

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

Um PSSessions auf dem lokalen Computer oder Remotecomputer abzurufen, verwenden Sie die Parameter "ComputerName" oder "Verbinden ionUri". Ohne Parameter ruft PSSession ab, Get-PSSession die in der lokalen Sitzung erstellt wurden, unabhängig davon, wo sie beendet wurden.

Das folgende Beispiel veranschaulicht die Verwendung von Get-PSSession.

New-PSSession erstellt eine Sitzung auf dem Server01-Computer. Die Sitzung befindet sich auf dem Server01-Computer.

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

Um die Sitzung von Server01 abzurufen, verwenden Sie den ComputerName-Parameter , um das Ziel von Get-PSSessionanzugeben.

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

Wenn der Wert des Parameters "ComputerName" von Get-PSSession "localhost" lautet, ruft PSSessions ab, Get-PSSession die beendet werden und auf dem lokalen Computer Standard enthalten sind. Es wird keine PSSessions auf dem Server01-Computer abgerufen, auch wenn sie auf dem lokalen Computer gestartet wurden.

Get-PSSession -ComputerName localhost

Verwenden Sie das Get-PSSession Cmdlet ohne Parameter, um Sitzungen abzurufen, die in der aktuellen Sitzung erstellt wurden. Ruft in diesem Beispiel die PSSession ab, Get-PSSession die in der aktuellen Sitzung erstellt wurde, und stellt eine Verbindung mit dem Server01-Computer herstellt.

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

Trennen von Sitzungen

Verwenden Sie das Disconnect-PSSession Cmdlet, um eine Sitzung zu trennen. Um die PSSession zu identifizieren, verwenden Sie den Session-Parameter , oder übergeben Sie ein PSSession-Objekt aus den New-PSSession Oder Get-PSSession Cmdlets an Disconnect-PSSession.

Mit dem folgenden Befehl wird die PSSession mit dem Server01-Computer getrennt. Beachten Sie, dass der Wert der State-Eigenschaft getrennt ist und die Verfügbarkeit keine ist.

Get-PSSession -ComputerName Server01 | Disconnect-PSSession
Id Name      ComputerName  State         ConfigurationName     Availability
-- ----      ------------  -----         -----------------     ------------
 2 Session2  Server01      Disconnected  Microsoft.PowerShell          None

Verwenden Sie zum Erstellen einer getrennten Sitzung den InDisconnectedSession-Parameter des Invoke-Command Cmdlets. Es erstellt eine Sitzung, startet den Befehl und trennt sofort, bevor der Befehl eine beliebige Ausgabe zurückgeben kann.

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

Invoke-Command -ComputerName Server02 -InDisconnectedSession -ScriptBlock {
   Get-WinEvent -LogName "*PowerShell*" }
Id Name      ComputerName  State         ConfigurationName     Availability
-- ----      ------------  -----         -----------------     ------------
 4 Session3  Server02      Disconnected  Microsoft.PowerShell          None

So stellen Sie eine Verbindung mit getrennten Sitzungen her

Verwenden Sie zum Verbinden einer getrennten Sitzung das Connect-PSSession Cmdlet mit den Parametern ComputerName oder Verbinden ionUri. Alternativ können Sie die Ausgabe von Get-PSSession an Connect-PSSession.

Im folgenden Beispiel werden die Sitzungen auf dem Server02-Computer abgerufen. Die Ausgabe enthält zwei getrennte Sitzungen.

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

Mit dem folgenden Befehl wird eine Verbindung mit Session2 hergestellt. Die PSSession ist jetzt geöffnet und verfügbar.

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

So erhalten Sie die Ergebnisse

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

Sie können das Cmdlet nicht verwenden, sondern Connect-PSSession verwendenReceive-PSSession. Wenn die Sitzung bereits erneut verbunden ist, werden die Ergebnisse von Befehlen abgerufen, Receive-PSSession die ausgeführt wurden, wenn die Sitzung getrennt wurde. Wenn die PSSession noch getrennt ist, Receive-PSSession wird eine Verbindung mit dieser hergestellt, und dann werden die Ergebnisse von Befehlen angezeigt, die ausgeführt wurden, während die Verbindung getrennt wurde.

Receive-PSSession kann die Ergebnisse in einem Auftrag (asynchron) oder in das Hostprogramm (synchron) zurückgeben. Verwenden Sie den Parameter "OutTarget", um "Auftrag" oder "Host" auszuwählen. Der Standardwert ist Host. Wenn der empfangene Befehl jedoch in der aktuellen Sitzung als Auftrag gestartet wurde, wird er standardmäßig als Auftrag zurückgegeben.

Im folgenden Beispiel wird das Receive-PSSession Cmdlet verwendet, um eine erneute Verbindung mit der Sitzung auf Server02 herzustellen und die Ergebnisse des Get-WinEvent Befehls abzurufen. Der Parameter OutTarget wird verwendet, um die Ergebnisse in einem Auftrag abzurufen.

Receive-PSSession -ComputerName Server02 -Name Session3 -OutTarget Job
Id   Name   PSJobTypeName   State         HasMoreData     Location
--   ----   -------------   -----         -----------     --------
 3   Job3   RemoteJob       Running       True            Server02

Verwenden Sie das Receive-Job Cmdlet, um die Ergebnisse des Auftrags abzurufen.

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

Status- und Verfügbarkeitseigenschaften

Die Status- und Verfügbarkeitseigenschaften einer getrennten PSSession teilen Ihnen mit, ob die Sitzung für Sie verfügbar ist, um die Verbindung erneut herzustellen.

Wenn eine PSSession mit der aktuellen Sitzung verbunden ist, wird der Status geöffnet , und die Verfügbarkeit ist verfügbar. Wenn Sie die Verbindung mit der PSSession trennen, wird der PSSession-Zustand getrennt , und die Verfügbarkeit ist "None".

Der Wert der State-Eigenschaft ist relativ zur aktuellen Sitzung. Ein Wert von "Disconnected " bedeutet, dass die PSSession nicht mit der aktuellen Sitzung verbunden ist. Es bedeutet jedoch nicht, dass die PSSession von allen Sitzungen getrennt ist. Sie kann mit einer anderen Sitzung verbunden sein.

Um festzustellen, ob Sie eine Verbindung mit der PSSession herstellen oder erneut herstellen können, verwenden Sie die Availability-Eigenschaft . Ein Wert von None gibt an, dass Sie eine Verbindung mit der Sitzung herstellen können. Ein Wert von Beschäftigt 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 PowerShell-Sitzungen auf demselben Computer ausgeführt. Beachten Sie die sich ändernden Werte der Status- und Verfügbarkeitseigenschaften in jeder Sitzung, da die PSSession getrennt und erneut verbunden wird.

# Session 1
New-PSSession -ComputerName Server30 -Name Test
Id Name   ComputerName    State         ConfigurationName     Availability
-- ----   ------------    -----         -----------------     ------------
1  Test   Server30        Opened        Microsoft.PowerShell     Available
# Session 2
Get-PSSession -ComputerName Server30 -Name Test
Id Name   ComputerName    State         ConfigurationName     Availability
-- ----   ------------    -----         -----------------     ------------
1 Test    Server30        Disconnected  Microsoft.PowerShell          Busy
# Session 1
Get-PSSession -ComputerName Server30 -Name Test | Disconnect-PSSession
Id Name   ComputerName    State         ConfigurationName     Availability
-- ----   ------------    -----         -----------------     ------------
1 Test    Server30        Disconnected  Microsoft.PowerShell          None
# Session 2
Get-PSSession -ComputerName Server30
Id Name   ComputerName    State         ConfigurationName     Availability
-- ----   ------------    -----         -----------------     ------------
1 Test    Server30        Disconnected  Microsoft.PowerShell          None
# Session 2
Connect-PSSession -ComputerName Server30 -Name Test
Id Name   ComputerName    State         ConfigurationName     Availability
-- ----   ------------    -----         -----------------     ------------
3 Test    Server30        Opened        Microsoft.PowerShell     Available
# Session 1
Get-PSSession -ComputerName Server30
Id Name   ComputerName    State         ConfigurationName     Availability
-- ----   ------------    -----         -----------------     ------------
1 Test    Server30        Disconnected  Microsoft.PowerShell          Busy

Getrennte Sitzungen werden auf dem Remotecomputer Standard beibehalten, bis Sie sie löschen, z. B. mithilfe des Remove-PSSession Cmdlets oder timeouts. Die IdleTimeout-Eigenschaft einer PSSession bestimmt, wie lange eine getrennte Sitzung Standard beibehalten wird, bevor sie gelöscht wird.

Leerlauftimeoutwerte

PSSessions sind im Leerlauf, wenn der Taktthread keine Antwort empfängt. Wenn Sie eine Sitzung trennen, wird sie im Leerlauf ausgeführt und die IdleTimeout-Uhr gestartet, auch wenn Befehle in der getrennten Sitzung noch ausgeführt werden. PowerShell betrachtet getrennte Sitzungen als aktiv, aber im Leerlauf.

Stellen Sie beim Erstellen und Trennen von Sitzungen sicher, dass das Leerlauftimeout in der PSSession lang genug ist, um die Sitzung für Ihre Anforderungen zu Standard, aber nicht so lange, dass es unnötige Ressourcen auf dem Remotecomputer verbraucht.

Die IdleTimeoutMs-Eigenschaft der Sitzungskonfiguration bestimmt das Standardmäßige Leerlauftimeout von Sitzungen, die die Sitzungskonfiguration verwenden. Sie können den Standardwert außer Kraft setzen, aber dieser Wert darf die MaxIdleTimeoutMs-Eigenschaft der Sitzungskonfiguration nicht überschreiten.

Verwenden Sie den folgenden Befehl, um die Werte von IdleTimeoutMs und MaxIdleTimeoutMs für eine Sitzungskonfiguration abzurufen.

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

Wenn Sie Mitglied der Gruppe "Administratoren" auf dem Remotecomputer sind, können Sie diese Werte festlegen, wenn Sie eine Sitzungskonfiguration erstellen. Außerdem können Sie die Werte ändern, wenn Sie die Verbindung trennen.

Der Leerlauftimeoutwert von Sitzungskonfigurationen und Sitzungsoptionen ist in Millisekunden. Der Leerlauftimeoutwert der Sitzungs- und Sitzungskonfigurationsoptionen beträgt in Sekunden.

Sie können das Leerlauftimeout einer PSSession festlegen, wenn Sie die PSSession erstellen (New-PSSession, Invoke-Command) und wenn Sie die Verbindung damit trennen (Disconnect-PSSession). Sie können den IdleTimeout-Wert jedoch nicht ändern, wenn Sie eine Verbindung mit der PSSession () herstellen oder Ergebnisse (Connect-PSSession) abrufen (Receive-PSSession).

Die Connect-PSSession Und Receive-PSSession Cmdlets verfügen über einen SessionOption-Parameter , der ein PSSessionOption-Objekt verwendet, z. B. einen, der New-PSSessionOption vom Cmdlet zurückgegeben wird.

Der Wert "IdleTimeout " im SessionOption-Objekt und der Wert "IdleTimeout " in der $PSSessionOption Einstellungsvariablen ändern den Wert des IdleTimeout in einem Connect-PSSession oder Receive-PSSession Befehl nicht.

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

Wenn Sie PSSessions erstellen, haben die Werte in $PSSessionOption der Variablen Vorrang vor den Werten in der Sitzungskonfiguration.

Mit dem folgenden Befehl wird beispielsweise ein Leerlauftimeout von 48 Stunden festgelegt:

$PSSessionOption = New-PSSessionOption -IdleTimeoutMSec 172800000

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

Die beim Erstellen der Sitzung festgelegten Werte haben Vorrang vor den in der $PSSessionOption Einstellungsvariablen und der Sitzungskonfiguration festgelegten Werten.

Zum Beispiel:

$o = New-PSSessionOption -IdleTimeoutMSec 172800000
New-PSSession -SessionOption $o

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

Zum Beispiel:

Disconnect-PSSession -IdleTimeoutSec 172800

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

Zum Beispiel:

$o = New-PSTransportOption -IdleTimeoutSec 172800 -MaxIdleTimeoutSec 259200
Register-PSSessionConfiguration -Name Test -TransportOption $o

Verwenden Sie die Parameter "IdleTimeoutSec " und "MaxIdleTimeoutSec " des New-PSTransportOption Cmdlets, um das standardtimele Timeout und das maximale Leerlaufzeitlimit einer Sitzungskonfiguration zu ändern. Verwenden Sie dann die Transportoption im Wert des TransportOption-Parameters von Set-PSSessionConfiguration.

Zum Beispiel:

$o = New-PSTransportOption -IdleTimeoutSec 172800 -MaxIdleTimeoutSec 259200
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 effektiv, ob der Befehl weiterhin ausgeführt wird, während die Sitzung getrennt ist.

Die gültigen Werte wie folgt:

  • Block (Standard) – Wenn der Ausgabepuffer voll ist, wird die Ausführung angehalten, bis der Puffer gelöscht ist. Block behält Daten bei, kann den Befehl jedoch unterbrechen.
  • Drop - Wenn der Ausgabepuffer voll ist, wird die Ausführung fortgesetzt. Wenn eine neue Ausgabe generiert wird, wird die älteste Ausgabe nicht Karte. Wenn Sie den Drop Wert verwenden, leiten Sie die Ausgabe an eine Datei um. Dieser Wert wird für getrennte Sitzungen empfohlen.

Die OutputBufferingMode-Eigenschaft der Sitzungskonfiguration bestimmt den Standardpuffermodus von Sitzungen, die die Sitzungskonfiguration verwenden.

Um den Wert einer Sitzungskonfiguration des OutputBufferingMode zu finden, können Sie eines der folgenden Befehlsformate verwenden:

(Get-PSSessionConfiguration <ConfigurationName>).OutputBufferingMode
Get-PSSessionConfiguration | Format-Table Name, OutputBufferingMode

Sie können den Standardwert in der Sitzungskonfiguration außer Kraft setzen und den Ausgabepuffermodus einer PSSession festlegen, wenn Sie eine PSSession erstellen, wenn Sie die Verbindung trennen und die Verbindung erneut herstellen.

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

Um eine PSSession mit einem Ausgabepuffermodus Dropzu erstellen, erstellen Sie eine $PSSessionOption Einstellungsvariable, in der der Wert der OutputBufferingMode -Eigenschaft ist Drop.

Wenn Sie PSSessions erstellen, haben die Werte in $PSSessionOption der Variablen Vorrang vor den Werten in der Sitzungskonfiguration.

Zum Beispiel:

$PSSessionOption = New-PSSessionOption -OutputBufferingMode Drop

Verwenden Sie den OutputBufferingMode-Parameter des New-PSSessionOption Cmdlets, um eine Sitzungsoption mit dem Wert " Drop. Verwenden Sie dann das PSSessionOption -Objekt als Wert des SessionOption-Parameters der New-PSSession oder Invoke-Command Cmdlets.

Die beim Erstellen der Sitzung festgelegten Werte haben Vorrang vor den in der $PSSessionOption Einstellungsvariablen und der Sitzungskonfiguration festgelegten Werten.

Zum Beispiel:

$o = New-PSSessionOption -OutputBufferingMode Drop
New-PSSession -SessionOption $o

Um den Ausgabepuffermodus einer PSSession beim Trennen zu ändern, verwenden Sie den Parameter OutputBufferingMode des Disconnect-PSSession Cmdlets.

Zum Beispiel:

Disconnect-PSSession -OutputBufferingMode Drop

Um den Ausgabepuffermodus einer PSSession beim erneuten Verbinden zu ändern, verwenden Sie den OutputBufferingMode-Parameter des New-PSSessionOption Cmdlets. Verwenden Sie dann die Sitzungsoption im Wert des SessionOption-Parameters von Connect-PSSession oder Receive-PSSession.

Zum Beispiel:

$o = New-PSSessionOption -OutputBufferingMode Drop
Connect-PSSession -ComputerName Server01 -Name Test -SessionOption $o

Verwenden Sie den OutputBufferingMode-Parameter des New-PSTransportOption Cmdlets, um eine Sitzungskonfiguration mit einem Standardausgabepuffermodus Dropzu erstellen, um ein Transportoptionsobjekt mit dem Wert ".Drop Verwenden Sie dann die Transportoption im Wert des TransportOption-Parameters von Register-PSSessionConfiguration.

Zum Beispiel:

$o = New-PSTransportOption -OutputBufferingMode Drop
Register-PSSessionConfiguration -Name Test -TransportOption $o

Verwenden Sie den OutputBufferingMode-Parameter des New-PSTransportOption Cmdlets, um den Standard-Ausgabepuffermodus einer Sitzungskonfiguration zu ändern, um eine Transportoption mit dem Wert ".Drop Verwenden Sie dann die Transportoption im Wert des SessionOption-Parameters von Set-PSSessionConfiguration.

Zum Beispiel:

$o = New-PSTransportOption -OutputBufferingMode Drop
Set-PSSessionConfiguration -Name Test -TransportOption $o

Trennen von Loopbacksitzungen

Loopbacksitzungen oder lokale Sitzungen sind PSSessions, die auf demselben Computer stammen und beendet werden. Wie andere PSSessions werden aktive Loopbacksitzungen auf dem Computer am Remoteende der Verbindung (dem lokalen Computer) Standard enthalten, sodass Sie die Verbindung mit Loopbacksitzungen trennen und erneut herstellen können.

Standardmäßig werden Loopbacksitzungen mit einem Netzwerksicherheitstoken erstellt, das keine Befehle in der Sitzung für den Zugriff auf andere Computer zulässt. Sie können eine Erneute Verbindung mit Loopbacksitzungen herstellen, die über ein Netzwerksicherheitstoken von jeder Sitzung auf dem lokalen Computer oder einem Remotecomputer verfügen.

Wenn Sie jedoch den EnableNetworkAccess-Parameter des New-PSSession, Enter-PSSessionoder Invoke-Command Cmdlets verwenden, wird die Loopbacksitzung mit einem interaktiven Sicherheitstoken erstellt. Das interaktive Token ermöglicht Befehle, die in der Loopbacksitzung ausgeführt werden, um Daten von anderen Computern abzurufen.

Sie können Loopbacksitzungen mit interaktiven Token trennen und dann die Verbindung von derselben Sitzung oder einer anderen Sitzung auf demselben Computer erneut herstellen. Um den böswilligen Zugriff zu verhindern, können Sie jedoch eine erneute Verbindung mit Loopbacksitzungen mit interaktiven Token nur vom Computer herstellen, auf dem sie erstellt wurden.

Warten auf Aufträge in getrennten Sitzungen

Das Wait-Job Cmdlet wartet, bis ein Auftrag abgeschlossen ist, und kehrt dann zur Eingabeaufforderung oder zum nächsten Befehl zurück. Gibt standardmäßig zurück, wenn die Sitzung, Wait-Job in der ein Auftrag ausgeführt wird, getrennt ist. Verwenden Sie den Parameter "Force", um das Wait-Job Cmdlet so zu leiten, dass die Sitzung erneut verbunden ist. Weitere Informationen finden Sie unter "Wait-Job".

Robuste Sitzungen und unbeabsichtigte Trennung

Eine PSSession kann aufgrund eines Computerausfalls oder eines Netzwerkausfalls unbeabsichtigt getrennt werden. PowerShell versucht, die PSSession wiederherzustellen, aber sein Erfolg hängt vom Schweregrad und der Dauer der Ursache ab.

Der Zustand einer unbeabsichtigt getrennten PSSession kann unterbrochen oder geschlossen sein, aber es kann auch getrennt werden. Wenn der Wert " Status getrennt" ist, können Sie dieselben Techniken zum Verwalten der PSSession wie bei absichtlicher Trennung der Sitzung verwenden.If the state is Disconnected, you can use the same techniques to manage the PSSession as you would would if the session were intentionally. Sie können z. B. das Connect-PSSession Cmdlet verwenden, um eine erneute Verbindung mit der Sitzung herzustellen, und das Receive-PSSession Cmdlet, um Ergebnisse von Befehlen abzurufen, die ausgeführt wurden, während die Sitzung getrennt wurde.

Wenn Sie die Sitzung schließen (beenden), in der eine PSSession erstellt wurde, während Befehle in der PSSession ausgeführt werden, Standard enthält PowerShell die PSSession im Zustand "Getrennt" auf dem Remotecomputer. Wenn Sie die Sitzung schließen (beenden), in der eine PSSession erstellt wurde, aber keine Befehle in der PSSession ausgeführt werden, versucht PowerShell nicht, die PSSession zu Standard.

Weitere Informationen