Freigeben über


Informationen zu remote getrennten Sitzungen

Kurze Beschreibung

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

Lange Beschreibung

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

Das Feature Getrennte Sitzungen ist nur verfügbar, wenn auf dem Remotecomputer PowerShell 3.0 oder eine höhere Version ausgeführt wird.

Mit dem Feature Getrennte Sitzungen können Sie die Sitzung, in der eine PSSession erstellt wurde, schließen und sogar PowerShell schließen und den Computer herunterfahren, ohne die Befehle zu unterbrechen, die in der PSSession ausgeführt werden. Getrennte Sitzungen sind nützlich für die Ausführung von Befehlen, deren Ausführung längere Zeit in Anspruch nimmt, und bieten die zeit- und geräteflexibilität, die IT-Experten benötigen.

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

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

In der Praxis können Sie mit dem Feature Getrennte Sitzungen mit der Lösung eines Problems beginnen, ihre Aufmerksamkeit auf ein Problem mit höherer Priorität richten und dann die Arbeit an der Lösung fortsetzen, selbst auf einem anderen Computer an einem anderen Ort.

Cmdlets für getrennte Sitzungen

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

  • Connect-PSSession: Stellt eine Verbindung mit einer getrennten PSSession her.
  • 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 InDisconnectedSession-Parameter erstellt eine PSSession und trennt sofort die Verbindung.

Funktionsweise des Features "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 Server der Verbindung verwaltet, auch wenn die Sitzung, in der die PSSession erstellt wurde, geschlossen und der Ausgangscomputer 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 endet, in der sie erstellt wurde.

Wenn Sie eine PSSession trennen, bleibt die PSSession aktiv und wird auf dem Remotecomputer verwaltet. Der Sitzungsstatus ändert sich von Wird ausgeführt in Getrennt. Sie können eine verbindung mit einer getrennten PSSession von der aktuellen Sitzung oder von einer anderen Sitzung auf demselben Computer oder von einem anderen Computer herstellen. Der Remotecomputer, auf dem die Sitzung verwaltet wird, 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 ist oder der Ausgabepuffer gefüllt wird. Um zu verhindern, dass ein vollständiger Ausgabepuffer einen Befehl angehalten, verwenden Sie den OutputBufferingMode-Parameter des Disconnect-PSSessionCmdlets , New-PSSessionOptionoder New-PSTransportOption .

Getrennte Sitzungen werden auf dem Remotecomputer im status "getrennt" beibehalten. Sie stehen für die wiederherstellung der Verbindung zur Verfügung, 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-PSSessionCmdlets , New-PSSessionOptionoder New-PSTransportOption verwenden.

Ein anderer Benutzer kann eine Verbindung mit psSessions herstellen, die Sie erstellt haben, aber nur, wenn er die Anmeldeinformationen angeben kann, die zum Erstellen der Sitzung verwendet wurden, oder die RunAs Anmeldeinformationen der Sitzungskonfiguration verwenden kann.

Abrufen von PSSessions

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

Verwenden Sie zum Abrufen von PSSessions auf dem lokalen Computer oder Remotecomputern die Parameter ComputerName oder ConnectionUri . Ruft ohne Parameter PSSession ab, Get-PSSession die in der lokalen Sitzung erstellt wurden, unabhängig davon, wo sie beendet werden.

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

Wenn Sie beispielsweise eine PSSession für den Server01-Computer erstellen, rufen Sie die Sitzung vom Server01-Computer ab. Wenn Sie eine PSSession von einem anderen Computer auf den lokalen Computer erstellen, rufen Sie die Sitzung vom lokalen Computer ab.

Die folgende Befehlssequenz zeigt, wie Get-PSSession funktioniert.

Der erste Befehl erstellt eine Sitzung für den Server01-Computer. Die Sitzung befindet sich auf dem Computer Server01.

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

Verwenden Sie zum Abrufen der Sitzung den ComputerName-Parameter von Get-PSSession mit dem Wert Server01.

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

Wenn der Wert des ComputerName-Parameters von Get-PSSession localhost ist, ruft PSSessions ab, Get-PSSession die bei enden und auf dem lokalen Computer verwaltet werden. Auf dem Server01-Computer werden keine PSSessions angezeigt, selbst wenn sie auf dem lokalen Computer gestartet wurden.

Get-PSSession -ComputerName localhost

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

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 PSSession zu trennen. Verwenden Sie zum Identifizieren der PSSession den Session-Parameter , oder pipelineieren Sie eine PSSession aus den New-PSSession Cmdlets oder Get-PSSession an Disconnect-PSSession.

Der folgende Befehl trennt die PSSession mit dem Server01-Computer. Beachten Sie, dass der Wert der State-EigenschaftGetrenntund verfügbarkeit den Wert None aufweist.

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 Parameter InDisconnectedSession des Invoke-Command Cmdlets. Es erstellt eine Sitzung, startet den Befehl und trennt sofort, bevor der Befehl eine Ausgabe zurückgeben kann.

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

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

Herstellen einer Verbindung mit getrennten Sitzungen

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

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

Verwenden Sie zum Verbinden einer getrennten PSSession das Connect-PSSession Cmdlet. Verwenden Sie die Parameter ComputerName oder ConnectionUri , um die PSSession zu identifizieren, oder pipelineieren Sie eine PSSession von Get-PSSession an Connect-PSSession.

Der folgende Befehl ruft die Sitzungen auf dem Server02-Computer ab. Die Ausgabe enthält zwei getrennte Sitzungen, die beide verfügbar sind.

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. 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

Abrufen der Ergebnisse

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

Sie können anstelle des Cmdlets Connect-PSSession verwendenReceive-PSSession. Wenn die Sitzung bereits wiederhergestellt wurde, ruft die Ergebnisse der Befehle ab, Receive-PSSession die ausgeführt wurden, als die Sitzung getrennt wurde. Wenn die PSSession noch getrennt ist, Receive-PSSession stellen Sie eine Verbindung mit ihr her und erhalten dann die Ergebnisse von Befehlen, die ausgeführt wurden, während sie getrennt wurde.

Receive-PSSession kann die Ergebnisse in einem Auftrag (asynchron) oder an 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.

Der folgende Befehl verwendet das Receive-PSSession Cmdlet, um eine Verbindung mit der PSSession auf dem Server02-Computer herzustellen und die Ergebnisse des Befehls abzurufen, der Get-WinEvent in der Sitzung Session3 ausgeführt wurde. Der Befehl verwendet den OutTarget-Parameter , 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 Cmdlet, um die Receive-Job 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

Zustands- und Verfügbarkeitseigenschaften

Die Status - und Verfügbarkeitseigenschaften einer getrennten PSSession geben An, ob die Sitzung verfügbar ist, damit Sie eine Verbindung herstellen können.

Wenn eine PSSession mit der aktuellen Sitzung verbunden ist, lautet ihr Status Geöffnet und ihre Verfügbarkeit ist Verfügbar. Wenn Sie die Verbindung mit der PSSession trennen, lautet der PSSession-Status Getrennt , und die Verfügbarkeit ist None.

Der Wert der State Eigenschaft bezieht sich auf die aktuelle Sitzung. Der Wert Disconnected bedeutet, dass die PSSession nicht mit der aktuellen Sitzung verbunden ist. Dies bedeutet jedoch nicht, dass die PSSession von allen Sitzungen getrennt ist. Sie kann mit einer anderen Sitzung verbunden sein.

Verwenden Sie die Availability-Eigenschaft , um zu bestimmen, ob Sie eine Verbindung mit der PSSession herstellen oder erneut eine Verbindung mit der PSSession herstellen können. Der Wert None gibt an, dass Sie eine Verbindung mit der Sitzung herstellen können. Der Wert 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 Eigenschaften State und Availability in jeder Sitzung, wenn die PSSession getrennt und wiederhergestellt 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
# Idle Timeout

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

PSSessions befinden sich im Leerlauf, wenn der Heartbeatthread keine Antwort empfängt. Wenn Sie eine Sitzung trennen, wird sie im Leerlauf ausgeführt, und die IdleTimeout-Uhr wird gestartet, auch wenn in der getrennten Sitzung noch Befehle 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 verwalten, aber nicht so lange, dass unnötige Ressourcen auf dem Remotecomputer verbraucht werden.

Die IdleTimeoutMs-Eigenschaft der Sitzungskonfiguration bestimmt das Standardtimeout im Leerlauf von Sitzungen, die die Sitzungskonfiguration verwenden. Sie können den Standardwert überschreiben, aber der von Ihnen verwendete Wert darf die MaxIdleTimeoutMs-Eigenschaft der Sitzungskonfiguration nicht überschreiten.

Verwenden Sie das folgende Befehlsformat, um den Wert der Werte IdleTimeoutMs und MaxIdleTimeoutMs einer Sitzungskonfiguration zu ermitteln.

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

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

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

Leerlauftimeoutwerte

Der Leerlauftimeoutwert von Sitzungskonfigurationen und Sitzungsoptionen liegt in Millisekunden. Der Leerlauftimeoutwert von Sitzungen und Sitzungskonfigurationsoptionen liegt in Sekunden.

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

Die Connect-PSSession Cmdlets und Receive-PSSession verfügen über einen SessionOption-Parameter , der ein SessionOption-Objekt akzeptiert, z. B. eines, das New-PSSessionOption vom Cmdlet zurückgegeben wird. Der IdleTimeout-Wert im SessionOption-Objekt und der IdleTimeout-Wert in der $PSSessionOption Einstellungsvariable ändern den Wert von IdleTimeout der PSSession in einem Connect-PSSession - oder Receive-PSSession -Befehl nicht.

Um eine PSSession mit einem bestimmten Leerlauftimeoutwert zu erstellen, erstellen Sie eine Einstellungsvariable $PSSessionOption . 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.

Der folgende Befehl legt beispielsweise ein Leerlauftimeout von 48 Stunden fest:

$PSSessionOption = New-PSSessionOption -IdleTimeoutMSec 172800000

Verwenden Sie den IdleTimeoutMSec-Parameter des Cmdlets, um eine PSSession mit einem bestimmten Wert für das New-PSSessionOption Leerlauftimeout zu erstellen. Verwenden Sie dann die Sitzungsoption im Wert des SessionOption-Parameters der New-PSSession Cmdlets oder Invoke-Command .

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

Beispiel:

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

Verwenden Sie den IdleTimeoutSec-Parameter des Cmdlets, um das Leerlauftimeoutout einer PSSession beim Trennen zu Disconnect-PSSession ändern.

Beispiel:

Disconnect-PSSession -IdleTimeoutSec 172800

Verwenden Sie zum Erstellen einer Sitzungskonfiguration mit einem bestimmten Leerlauftimeout und einem maximalen Leerlauftimeout die Parameter IdleTimeoutSec und MaxIdleTimeoutSec des New-PSTransportOption Cmdlets. Verwenden Sie dann die Transportoption im Wert des TransportOption-Parameters von Register-PSSessionConfiguration.

Beispiel:

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

Verwenden Sie die Parameter IdleTimeoutSec und MaxIdleTimeoutSec des Cmdlets, um das Standardmäßige Leerlauftimeoutout und das New-PSTransportOption maximale Leerlauftimeoutout einer Sitzungskonfiguration zu ändern. Verwenden Sie dann die Transportoption im Wert des TransportOption-Parameters von Set-PSSessionConfiguration.

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 wird.

Die gültigen Werte wie folgt:

  • Blockierung: Wenn der Ausgabepuffer voll ist, wird die Ausführung unterbrochen, bis der Puffer leer ist. Der Standardwert.
  • Drop. Wenn der Ausgabepuffer voll ist, wird die Ausführung fortgesetzt. Wenn eine neue Ausgabe generiert wird, wird die älteste Ausgabe verworfen.

Block behält Daten bei, kann jedoch den Befehl unterbrechen. Beim Wert Drop kann der Befehl abgeschlossen werden, obwohl Daten verloren gehen können. Bei Verwendung des Drop-Werts 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 Standardmodus für die Ausgabepufferung von Sitzungen, die die Sitzungskonfiguration verwenden.

Um den Wert einer Sitzungskonfiguration für OutputBufferingMode zu ermitteln, 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 überschreiben und den Ausgabepuffermodus einer PSSession festlegen, wenn Sie eine PSSession erstellen, wenn Sie die Verbindung trennen und die Verbindung wiederherstellen.

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

Um eine PSSession mit dem Ausgabepuffermodus Drop zu erstellen, erstellen Sie eine $PSSessionOption Einstellungsvariable, in der der Wert der OutputBufferingMode-EigenschaftDrop ist.

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

Beispiel:

$PSSessionOption = New-PSSessionOption -OutputBufferingMode Drop

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

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

Beispiel:

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

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

Beispiel:

Disconnect-PSSession -OutputBufferingMode Drop

Um den Ausgabepuffermodus einer PSSession beim erneuten Herstellen der Verbindung zu ändern, verwenden Sie den OutputBufferingMode-Parameter des New-PSSessionOption Cmdlets, um eine Sitzungsoption mit dem Wert Drop zu erstellen. Verwenden Sie dann die Sitzungsoption im Wert des SessionOption-Parameters von Connect-PSSession oder Receive-PSSession.

Beispiel:

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

Verwenden Sie zum Erstellen einer Sitzungskonfiguration mit dem Standardmäßigen Ausgabepuffermodus Drop den OutputBufferingMode-Parameter des New-PSTransportOption Cmdlets, um ein Transportoptionsobjekt mit dem Wert Drop zu erstellen. Verwenden Sie dann die Transportoption im Wert des TransportOption-Parameters von Register-PSSessionConfiguration.

Beispiel:

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

Verwenden Sie zum Ändern des Standardmäßigen Ausgabepuffermodus einer Sitzungskonfiguration den OutputBufferingMode-Parameter des New-PSTransportOption Cmdlets, um eine Transportoption mit dem Wert Drop zu erstellen. Verwenden Sie dann die Option Transport im Wert des SessionOption-Parameters von Set-PSSessionConfiguration.

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 entstehen und enden. Wie bei anderen PSSessions werden aktive Loopbacksitzungen auf dem Computer am Remoteende der Verbindung (dem lokalen Computer) verwaltet, sodass Sie die Verbindung mit Loopbacksitzungen trennen und erneut herstellen können.

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

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

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

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. Wenn Sie das Wait-Job Cmdlet anweisen möchten, zu warten, bis die Sitzung wieder verbunden ist, verwenden Sie im Zustand Geöffnet den Parameter Force . Weitere Informationen finden Sie unter Wait-Job.

Stabile Sitzungen und unbeabsichtigte Trennung

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

Der Status einer unbeabsichtigt getrennten PSSession kann unterbrochen oder Geschlossen sein, aber es kann auch Getrennt sein. Wenn state den WertDisconnected aufweist, können Sie zum Verwalten der PSSession die gleichen Techniken wie bei absichtlicher Trennung der Sitzung verwenden. Beispielsweise können Sie das Connect-PSSession Cmdlet verwenden, um die Verbindung mit der Sitzung wiederherzustellen, 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, verwaltet PowerShell die PSSession im Status 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 verwalten.

Weitere Informationen

about_Jobs

about_Remote

about_Remote_Variables

about_PSSessions

about_Session_Configurations

Connect-PSSession

Disconnect-PSSession

Get-PSSession

Receive-PSSession

Invoke-Command