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