about_Remote_Disconnected_Sessions
Kurze Beschreibung
Hier erfahren Sie, wie Sie eine Verbindung mit einer PowerShell-Sitzung (PSSession) trennen und erneut verbinden.
Lange Beschreibung
Ab PowerShell 3.0 können Sie die Verbindung mit einer PSSession trennen und von demselben oder einem anderen Computer eine Verbindung mit der PSSession herstellen. Der Sitzungsstatus wird beibehalten, und Befehle in der PSSession werden weiterhin ausgeführt, während die Sitzung getrennt wird.
Mit dem Feature "Getrennte Sitzungen" können Sie die Sitzung schließen, in der eine PSSession erstellt wurde, und den Computer herunterfahren, ohne die Befehle, die in der Remote-PSSession ausgeführt werden, zu unterbrechen. Getrennte Sitzungen sind nützlich für die Ausführung von Befehlen, die einen längeren Zeitraum in Anspruch nehmen.
Sie können keine Verbindung mit einer interaktiven Sitzung herstellen, die mit dem Enter-PSSession
Cmdlet gestartet wurde.
Sie können getrennte Sitzungen verwenden, um PSSessions zu verwalten, die aufgrund eines Computer- oder Netzwerkausfalls unbeabsichtigt getrennt wurden.
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 sich sofort.
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 der Remote- oder Serverseite der Verbindung beibehalten, 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, endet.
Wenn Sie eine PSSession trennen, bleibt die PSSession aktiv und wird auf dem Remotecomputer verwaltet. Der Sitzungsstatus ändert sich von Ausführen in Getrennt. Sie können von aus eine Verbindung mit einer getrennten PSSession herstellen.
- Die aktuelle Sitzung auf demselben Computer
- Eine andere Sitzung auf demselben Computer
- Aus einer Sitzung auf einem anderen Computer
Der Remotecomputer, auf dem die Sitzung verwaltet wird, 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 ansetzt, verwenden Sie den OutputBufferingMode-Parameter des Disconnect-PSSession
Cmdlets , New-PSSessionOption
oder New-PSTransportOption
.
Getrennte Sitzungen werden auf dem Remotecomputer im status "getrennt" beibehalten. Sie können die Verbindung wiederhergestellt werden, 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 des Disconnect-PSSession
Cmdlets , New-PSSessionOption
oder 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.
So erhalten Sie 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 enden.
Das folgende Beispiel veranschaulicht die Verwendung von Get-PSSession
.
New-PSSession
erstellt eine Sitzung für den 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-PSSession
anzugeben.
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 am enden und auf dem lokalen Computer verwaltet werden. PsSessions werden auf dem Server01-Computer nicht abgerufen, selbst wenn sie auf dem lokalen Computer gestartet wurden.
Get-PSSession -ComputerName localhost
Um Sitzungen abzurufen, die in der aktuellen Sitzung erstellt wurden, verwenden Sie das Get-PSSession
Cmdlet ohne Parameter. Ruft in diesem Beispiel die PSSession ab, Get-PSSession
die in der aktuellen Sitzung erstellt wurde, 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 Sitzung zu trennen. Um die PSSession zu identifizieren, verwenden Sie den Session-Parameter , oder leiten Sie ein PSSession-Objekt aus den New-PSSession
Cmdlets oder Get-PSSession
an Disconnect-PSSession
.
Mit dem folgenden Befehl wird die PSSession mit dem Server01-Computer getrennt. Beachten Sie, dass der Wert der State-EigenschaftGetrennt und die VerfügbarkeitKeine 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 Parameter InDisconnectedSession des Invoke-Command
Cmdlets. Es erstellt eine Sitzung, startet den Befehl und trennt sich 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
Herstellen einer Verbindung mit getrennten Sitzungen
Verwenden Sie das Cmdlet mit den Connect-PSSession
Parametern ComputerName oder ConnectionUri , um eine Verbindung mit einer getrennten Sitzung herzustellen. Alternativ können Sie die Ausgabe von Get-PSSession
an übergeben Connect-PSSession
.
Im folgenden Beispiel werden die Sitzungen auf dem Server02-Computer abgerufen. Die Ausgabe umfasst 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
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
So erhalten Sie die Ergebnisse
Verwenden Sie das Cmdlet, um die Ergebnisse von Befehlen abzurufen, die Receive-PSSession
in einer getrennten PSSession ausgeführt wurden.
Sie können das Cmdlet anstelle des Connect-PSSession
Cmdlets verwendenReceive-PSSession
. Wenn die Sitzung bereits wieder verbunden ist, ruft die Ergebnisse der Befehle ab, Receive-PSSession
die ausgeführt wurden, als die Sitzung getrennt wurde. Wenn die PSSession weiterhin getrennt ist, Receive-PSSession
stellt sie eine Verbindung her, und ruft dann die Ergebnisse der Befehle ab, 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 OutTarget-Parameter , 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 die Verbindung mit der Sitzung auf Server02 wiederherzustellen und die Ergebnisse des Get-WinEvent
Befehls abzurufen. Der OutTarget-Parameter 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 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 der Status Geöffnet und die Verfügbarkeit ist Verfügbar. Wenn Sie die Verbindung mit der PSSession trennen, lautet der PSSession-Status Getrennt, und die Verfügbarkeit ist Keine.
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 eine erneute Verbindung mit der PSSession herstellen können. Der Wert None gibt an, dass Sie eine Verbindung mit der Sitzung herstellen können. Der Wert Busy 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, 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
Getrennte Sitzungen werden auf dem Remotecomputer beibehalten, bis Sie sie löschen, z. B. mithilfe des Remove-PSSession
Cmdlets, oder bis zu einem Timeout. Die IdleTimeout-Eigenschaft einer PSSession bestimmt, wie lange eine getrennte Sitzung beibehalten wird, bevor sie gelöscht wird.
Leerlauftimeoutwerte
PSSessions befinden sich im Leerlauf, wenn der Heartbeatthread keine Antwort erhält. Wenn Sie eine Sitzung trennen, wird sie im Leerlauf ausgeführt und die IdleTimeout-Uhr gestartet, auch wenn Befehle in der getrennten Sitzung weiterhin 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 beizubehalten, aber nicht so lange, dass unnötige Ressourcen auf dem Remotecomputer verbraucht werden.
Die IdleTimeoutMs-Eigenschaft der Sitzungskonfiguration bestimmt das Standardzeitlimit im Leerlauf von Sitzungen, die die Sitzungskonfiguration verwenden. Sie können den Standardwert überschreiben, 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 liegt in Millisekunden. Der Leerlauftimeoutwert von Sitzungen und Sitzungskonfigurationsoptionen liegt in Sekunden.
Sie können das Leerlauftimeout einer PSSession festlegen, wenn Sie die PSSession erstellen (New-PSSession
, Invoke-Command
) und wenn Sie die Verbindung davon 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 PSSessionOption-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 des IdleTimeout 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
Um eine PSSession mit einem bestimmten Leerlauftimeoutwert zu erstellen, verwenden Sie den Parameter IdleTimeoutMSec des New-PSSessionOption
Cmdlets. Verwenden Sie dann die Sitzungsoption im Wert des SessionOption-Parameters des New-PSSession
Cmdlets oder Invoke-Command
.
Die beim Erstellen der Sitzung festgelegten Werte haben Vorrang vor den Werten, die in der $PSSessionOption
Einstellungsvariablen und der Sitzungskonfiguration festgelegt sind.
Beispiel:
$o = New-PSSessionOption -IdleTimeoutMSec 172800000
New-PSSession -SessionOption $o
Um das Leerlauftimeout einer PSSession beim Trennen zu ändern, verwenden Sie den IdleTimeoutSec-Parameter des Disconnect-PSSession
Cmdlets.
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
.
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 Standardzeitlimit im Leerlauf und das maximale LeerlauftimeouttimeoutSec einer New-PSTransportOption
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 sind wie folgt:
Block
(Standardeinstellung): Wenn der Ausgabepuffer voll ist, wird die Ausführung angehalten, bis der Puffer gelöscht ist.Block
behält Daten bei, unterbricht jedoch möglicherweise den Befehl.Drop
– Wenn der Ausgabepuffer voll ist, wird die Ausführung fortgesetzt. Wenn eine neue Ausgabe generiert wird, wird die älteste Ausgabe verworfen. Wenn Sie denDrop
Wert verwenden, leiten Sie die Ausgabe in 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 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, 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 von Drop
zu 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.
Beispiel:
$PSSessionOption = New-PSSessionOption -OutputBufferingMode Drop
Verwenden Sie den OutputBufferingMode-Parameter des New-PSSessionOption
Cmdlets, um eine Sitzungsoption mit dem Wert zu Drop
erstellen. Verwenden Sie dann das PSSessionOption-Objekt als Wert des SessionOption-Parameters des New-PSSession
Cmdlets oder Invoke-Command
.
Die beim Erstellen der Sitzung festgelegten Werte haben Vorrang vor den Werten, die in der $PSSessionOption
Einstellungsvariablen 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
Verwenden Sie den OutputBufferingMode-ParameterNew-PSSessionOption
des Cmdlets, um den Ausgabepuffermodus einer PSSession bei einer erneuten Verbindung zu ändern. 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
Um eine Sitzungskonfiguration mit dem Standardausgabepuffermodus von Drop
zu erstellen, verwenden Sie den OutputBufferingMode-Parameter des New-PSTransportOption
Cmdlets, um ein Transportoptionsobjekt mit dem Wert von 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
Um den Standardausgabepuffermodus einer Sitzungskonfiguration zu ändern, verwenden Sie den OutputBufferingMode-Parameter des New-PSTransportOption
Cmdlets, um eine Transportoption mit dem Wert zu Drop
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) aufrechterhalten, sodass Sie die Verbindung von Loopbacksitzungen trennen und wieder mit Loopbacksitzungen verbinden 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 eine Verbindung mit Loopbacksitzungen herstellen, die über ein Netzwerksicherheitstoken von jeder Sitzung auf dem lokalen Computer oder einem Remotecomputer verfügen.
Wenn Sie jedoch den Parameter EnableNetworkAccess des New-PSSession
Cmdlets , Enter-PSSession
oder 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 herstellen. Um böswilligen Zugriff zu verhindern, können Sie jedoch nur auf dem Computer, auf dem sie erstellt wurden, eine Verbindung mit Loopbacksitzungen mit interaktiven Token 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. Um das Wait-Job
Cmdlet anweisen zu müssen, bis die Sitzung wieder verbunden ist, verwenden Sie im Zustand Geöffnet den Force-Parameter . 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 der Erfolg hängt vom Schweregrad und der Dauer der Ursache ab.
Der Status einer unbeabsichtigt getrennten PSSession ist möglicherweise unterbrochen oder geschlossen, aber es kann auch Getrennt sein. Wenn der Wert von Zustandgetrennt ist, können Sie zum Verwalten der PSSession dieselben Techniken wie bei einer absichtlichen Trennung der Sitzung verwenden. Beispielsweise können Sie das Connect-PSSession
Cmdlet verwenden, um die Verbindung mit der Sitzung und dem Receive-PSSession
Cmdlet wiederherzustellen, 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, behält PowerShell die PSSession im Zustand Getrennt auf dem Remotecomputer bei. 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.