about_Remote_Disconnected_Sessions
Krótki opis
W tym artykule wyjaśniono, jak rozłączyć sesję programu PowerShell i ponownie nawiązać połączenie z sesją programu PowerShell (PSSession).
Długi opis
Począwszy od programu PowerShell 3.0, można odłączyć się od programu PSSession i ponownie nawiązać połączenie z programem PSSession z tego samego komputera lub innego komputera. Stan sesji jest utrzymywany, a polecenia w sesji PSSession są nadal uruchamiane, gdy sesja jest rozłączona.
Funkcja Rozłączone sesje umożliwia zamknięcie sesji, w której utworzono sesję PSSession i zamknięcie komputera bez zakłócania poleceń uruchomionych w zdalnym programie PSSession. Sesje rozłączone są przydatne w przypadku uruchamiania poleceń, które trwają przez dłuższy czas.
Nie można odłączyć się od sesji interaktywnej, która została rozpoczęta przy użyciu Enter-PSSession
polecenia cmdlet .
Sesje rozłączone można używać do zarządzania sesjami PSSessions, które zostały rozłączone przypadkowo w wyniku awarii komputera lub sieci.
Rozłączone polecenia cmdlet sesji
Następujące polecenia cmdlet obsługują funkcję Rozłączone sesje:
Connect-PSSession
: nawiązuje połączenie z odłączonym programem PSSession.Disconnect-PSSession
: rozłącza program PSSession.Get-PSSession
: pobiera pssessions na komputerze lokalnym lub na komputerach zdalnych.Receive-PSSession
: pobiera wyniki poleceń uruchamianych w rozłączonych sesjach.Invoke-Command
: Parametr InDisconnectedSession tworzy polecenie PSSession i natychmiast się rozłącza.
Jak działa funkcja Rozłączone sesje
Począwszy od programu PowerShell 3.0, sesje PSSessions są niezależne od sesji, w których są tworzone. Aktywne sesje PSSession są przechowywane po stronie komputera zdalnego lub serwera połączenia, nawet jeśli komputer po stronie klienta jest wyłączony lub odłączony od sieci.
W programie PowerShell 2.0 sesja PSSession jest usuwana z komputera zdalnego po odłączeniu od sesji źródłowej lub sesji, w której została utworzona.
Po rozłączeniu programu PSSession sesja psSession pozostaje aktywna i jest utrzymywana na komputerze zdalnym. Stan sesji zmienia się z Uruchomiono na Rozłączone. Możesz ponownie nawiązać połączenie z odłączonym psSession
- Bieżąca sesja na tym samym komputerze
- Inna sesja na tym samym komputerze
- Z poziomu sesji na innym komputerze
Komputer zdalny, który utrzymuje sesję, musi być uruchomiony i być połączony z siecią.
Polecenia w odłączonej sesji PSSession będą nadal działać nieprzerwanie na komputerze zdalnym do momentu zakończenia polecenia lub wypełnienia buforu wyjściowego. Aby zapobiec wstrzymaniu polecenia przez pełny bufor wyjściowy, użyj parametru OutputBufferingMode poleceń Disconnect-PSSession
cmdlet , New-PSSessionOption
lub New-PSTransportOption
.
Rozłączone sesje są utrzymywane w stanie rozłączenia na komputerze zdalnym. Są one dostępne do ponownego nawiązania połączenia do momentu usunięcia sesji PSSession, na przykład za pomocą Remove-PSSession
polecenia cmdlet lub do momentu wygaśnięcia limitu czasu bezczynności sesji PSSession. Limit czasu bezczynności sesji PSSession można dostosować przy użyciu parametrów Disconnect-PSSession
IdleTimeoutSec lub IdleTimeout poleceń cmdlet , New-PSSessionOption
lub New-PSTransportOption
.
Inny użytkownik może nawiązać połączenie z utworzonymi sesjami PSSessions, ale tylko wtedy, gdy może podać poświadczenia użyte do utworzenia sesji lub użyć RunAs
poświadczeń konfiguracji sesji.
Jak uzyskać pssessions
Począwszy od programu PowerShell 3.0, Get-PSSession
polecenie cmdlet pobiera sesje PSSessions na komputerze lokalnym i komputerach zdalnych. Może również pobrać sesje PSSessions, które zostały utworzone w bieżącej sesji.
Aby uzyskać psSessions na komputerze lokalnym lub komputerach zdalnych, użyj parametrów ComputerName lub ConnectionUri . Bez parametrów Get-PSSession
program pobiera sesję PSSession, która została utworzona w sesji lokalnej, niezależnie od tego, gdzie zakończą działanie.
W poniższym przykładzie pokazano, jak używać polecenia Get-PSSession
.
New-PSSession
tworzy sesję na komputerze Server01. Sesja znajduje się na komputerze Server01.
New-PSSession -ComputerName Server01
Id Name ComputerName State ConfigurationName Availability
-- ---- ------------ ----- ----------------- ------------
2 Session2 Server01 Opened Microsoft.PowerShell Available
Aby pobrać sesję z serwera Server01, użyj parametru ComputerName, aby określić element docelowy .Get-PSSession
Get-PSSession -ComputerName Server01
Id Name ComputerName State ConfigurationName Availability
-- ---- ------------ ----- ----------------- ------------
2 Session2 Server01 Opened Microsoft.PowerShell Available
Jeśli wartość parametru ComputerName parametru Get-PSSession
to localhost, pobiera pssessions, Get-PSSession
które kończą działanie i są przechowywane na komputerze lokalnym. Nie powoduje to pobrania pssessions na komputerze Server01, nawet jeśli zostały uruchomione na komputerze lokalnym.
Get-PSSession -ComputerName localhost
Aby pobrać sesje utworzone w bieżącej sesji, użyj Get-PSSession
polecenia cmdlet bez parametrów. W tym przykładzie Get-PSSession
program pobiera sesję PSSession utworzoną w bieżącej sesji i nawiązuje połączenie z komputerem Server01.
Get-PSSession
Id Name ComputerName State ConfigurationName Availability
-- ---- ------------ ----- ----------------- ------------
2 Session2 Server01 Opened Microsoft.PowerShell Available
Jak rozłączyć sesje
Disconnect-PSSession
Użyj polecenia cmdlet , aby rozłączyć sesję. Aby zidentyfikować sesję PSSession, użyj parametru Sesja lub potoku obiektu PSSession z poleceń New-PSSession
cmdlet lub Get-PSSession
do Disconnect-PSSession
.
Następujące polecenie rozłącza program PSSession z komputerem Server01. Zwróć uwagę, że wartość właściwości State jest rozłączona , a wartość Availability ma wartość None.
Get-PSSession -ComputerName Server01 | Disconnect-PSSession
Id Name ComputerName State ConfigurationName Availability
-- ---- ------------ ----- ----------------- ------------
2 Session2 Server01 Disconnected Microsoft.PowerShell None
Aby utworzyć sesję odłączoną, użyj parametru InDisconnectedSession polecenia Invoke-Command
cmdlet . Tworzy sesję, uruchamia polecenie i rozłącza się natychmiast, zanim polecenie może zwrócić dowolne dane wyjściowe.
Następujące polecenie uruchamia Get-WinEvent
polecenie w rozłączonej sesji na komputerze zdalnym Server02.
Invoke-Command -ComputerName Server02 -InDisconnectedSession -ScriptBlock {
Get-WinEvent -LogName "*PowerShell*" }
Id Name ComputerName State ConfigurationName Availability
-- ---- ------------ ----- ----------------- ------------
4 Session3 Server02 Disconnected Microsoft.PowerShell None
Jak nawiązać połączenie z sesjami bez połączenia
Aby nawiązać połączenie z rozłączną sesją, użyj Connect-PSSession
polecenia cmdlet z parametrami ComputerName lub ConnectionUri . Alternatywnie możesz przekazać dane wyjściowe Get-PSSession
polecenia do Connect-PSSession
.
Poniższy przykład pobiera sesje na komputerze Server02. Dane wyjściowe obejmują dwie rozłączone sesje.
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
Następujące polecenie łączy się z sesją2. Program PSSession jest teraz otwarty i dostępny.
Connect-PSSession -ComputerName Server02 -Name Session2
Id Name ComputerName State ConfigurationName Availability
-- ---- ------------ ----- ----------------- ------------
2 Session2 juneb-srv8320 Opened Microsoft.PowerShell Available
Jak uzyskać wyniki
Aby uzyskać wyniki poleceń uruchomionych w rozłączonym programie PSSession, użyj Receive-PSSession
polecenia cmdlet .
Zamiast używać polecenia cmdlet , można użyć Receive-PSSession
polecenia Connect-PSSession
cmdlet . Jeśli sesja jest już ponownie połączona, Receive-PSSession
pobiera wyniki poleceń, które były uruchamiane po rozłączeniu sesji. Jeśli program PSSession jest nadal odłączony, nawiązuje z nim połączenie, Receive-PSSession
a następnie pobiera wyniki poleceń, które zostały uruchomione, gdy zostało rozłączone.
Receive-PSSession
Program może zwrócić wyniki w zadaniu (asynchronicznie) lub do programu hosta (synchronicznie). Użyj parametru OutTarget , aby wybrać pozycję Zadanie lub Host. Wartość domyślna to Host. Jeśli jednak polecenie, które jest odbierane, zostało uruchomione w bieżącej sesji jako zadanie, jest ono domyślnie zwracane jako zadanie .
W poniższym przykładzie użyto Receive-PSSession
polecenia cmdlet , aby ponownie nawiązać połączenie z sesją na serwerze Server02 i uzyskać wyniki Get-WinEvent
polecenia . Parametr OutTarget służy do pobierania wyników w zadaniu.
Receive-PSSession -ComputerName Server02 -Name Session3 -OutTarget Job
Id Name PSJobTypeName State HasMoreData Location
-- ---- ------------- ----- ----------- --------
3 Job3 RemoteJob Running True Server02
Aby uzyskać wyniki zadania, użyj Receive-Job
polecenia cmdlet .
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
Właściwości stanu i dostępności
Właściwości Stan i Dostępność rozłączonego programu PSSession informują o tym, czy sesja jest dostępna do ponownego nawiązania z nią połączenia.
Gdy sesja PSSession jest połączona z bieżącą sesją, jego stan jest otwarty , a jego dostępność jest dostępna. Po odłączeniu od programu PSSession stan PSSession jest odłączony , a jego dostępność to Brak.
Wartość właściwości State jest względna względem bieżącej sesji. Wartość Disconnected oznacza, że sesja PSSession nie jest połączona z bieżącą sesją. Nie oznacza to jednak, że sesja PSSession jest odłączona od wszystkich sesji. Może być połączony z inną sesją.
Aby określić, czy można nawiązać połączenie z programem PSSession, czy ponownie nawiązać połączenie, użyj właściwości Availability . Wartość None wskazuje, że można nawiązać połączenie z sesją. Wartość Busy wskazuje, że nie można nawiązać połączenia z sesją PSSession, ponieważ jest połączona z inną sesją.
Poniższy przykład jest uruchamiany w dwóch sesjach programu PowerShell na tym samym komputerze. Zwróć uwagę na zmieniające się wartości właściwości Stan i Dostępność w każdej sesji, ponieważ sesja PSSession jest rozłączona i ponownie połączona.
# 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
Sesje rozłączone są utrzymywane na komputerze zdalnym do momentu ich usunięcia, na przykład za pomocą polecenia cmdlet lub przekroczenia limitu Remove-PSSession
czasu. Właściwość IdleTimeout sesji PSSession określa, jak długo jest utrzymywana rozłączona sesja przed jej usunięciem.
Wartości limitu czasu bezczynności
Sesje PSSessions są bezczynne, gdy wątek pulsu nie otrzyma odpowiedzi. Rozłączenie sesji sprawia, że jest bezczynne i uruchamia zegar IdleTimeout , nawet jeśli polecenia są nadal uruchomione w rozłączonej sesji. Program PowerShell uznaje sesje rozłączone za aktywne, ale bezczynne.
Podczas tworzenia i rozłączania sesji sprawdź, czy limit czasu bezczynności w sesji PSSession jest wystarczająco długi, aby utrzymać sesję zgodnie z potrzebami, ale nie tak długo, aby zużywał niepotrzebne zasoby na komputerze zdalnym.
Właściwość IdleTimeoutMs konfiguracji sesji określa domyślny limit czasu bezczynności sesji korzystających z konfiguracji sesji. Można zastąpić wartość domyślną, ale ta wartość nie może przekroczyć właściwości MaxIdleTimeoutMs konfiguracji sesji.
Użyj następującego polecenia, aby uzyskać wartości idleTimeoutMs i MaxIdleTimeoutMs dla konfiguracji sesji.
Get-PSSessionConfiguration |
Format-Table Name, IdleTimeoutMs, MaxIdleTimeoutMs
Jeśli jesteś członkiem grupy Administratorzy na komputerze zdalnym, możesz ustawić te wartości podczas tworzenia konfiguracji sesji. Ponadto można zmienić wartości po rozłączeniu.
Wartość limitu czasu bezczynności konfiguracji sesji i opcji sesji jest wyrażona w milisekundach. Wartość limitu czasu bezczynności sesji i opcji konfiguracji sesji wynosi w sekundach.
Możesz ustawić limit czasu bezczynności programu PSSession podczas tworzenia programu PSSession (New-PSSession
, Invoke-Command
) i po rozłączeniu się z nim (Disconnect-PSSession
). Nie można jednak zmienić wartości IdleTimeout podczas nawiązywania połączenia z programem PSSession (Connect-PSSession
) lub uzyskać wyniki (Receive-PSSession
).
Polecenia Connect-PSSession
cmdlet i Receive-PSSession
mają parametr SessionOption , który przyjmuje obiekt PSSessionOption , taki jak jeden zwrócony przez New-PSSessionOption
polecenie cmdlet.
Wartość IdleTimeout w obiekcie SessionOption i wartość IdleTimeout w $PSSessionOption
zmiennej preferencji nie zmieniają wartości idleTimeout w poleceniu Connect-PSSession
lub Receive-PSSession
.
Aby utworzyć usługę PSSession z określoną wartością limitu czasu bezczynności, utwórz zmienną $PSSessionOption
preferencji. Ustaw wartość właściwości IdleTimeout na żądaną wartość (w milisekundach).
Podczas tworzenia serwerów PSSessions wartości w $PSSessionOption
zmiennej mają pierwszeństwo przed wartościami w konfiguracji sesji.
Na przykład następujące polecenie ustawia limit czasu bezczynności 48 godzin:
$PSSessionOption = New-PSSessionOption -IdleTimeoutMSec 172800000
Aby utworzyć usługę PSSession z określoną wartością limitu czasu bezczynności, użyj parametru New-PSSessionOption
IdleTimeoutMSec polecenia cmdlet. Następnie użyj opcji sesji w wartości parametru New-PSSession
SessionOption poleceń cmdlet lubInvoke-Command
.
Wartości ustawione podczas tworzenia sesji mają pierwszeństwo przed wartościami ustawionymi w zmiennej $PSSessionOption
preferencji i konfiguracji sesji.
Na przykład:
$o = New-PSSessionOption -IdleTimeoutMSec 172800000
New-PSSession -SessionOption $o
Aby zmienić limit czasu bezczynności sesji PSSession podczas rozłączania, użyj parametru Disconnect-PSSession
IdleTimeoutSec polecenia cmdlet.
Na przykład:
Disconnect-PSSession -IdleTimeoutSec 172800
Aby utworzyć konfigurację sesji z określonym limitem czasu bezczynności i maksymalnym limitem czasu bezczynności, użyj parametrów New-PSTransportOption
IdleTimeoutSec i MaxIdleTimeoutSec polecenia cmdlet. Następnie użyj opcji transportu w wartości parametru TransportOption .Register-PSSessionConfiguration
Na przykład:
$o = New-PSTransportOption -IdleTimeoutSec 172800 -MaxIdleTimeoutSec 259200
Register-PSSessionConfiguration -Name Test -TransportOption $o
Aby zmienić domyślny limit czasu bezczynności i maksymalny limit czasu bezczynności konfiguracji sesji, użyj parametrów New-PSTransportOption
IdleTimeoutSec i MaxIdleTimeoutSec polecenia cmdlet. Następnie użyj opcji transportu w wartości parametru TransportOption .Set-PSSessionConfiguration
Na przykład:
$o = New-PSTransportOption -IdleTimeoutSec 172800 -MaxIdleTimeoutSec 259200
Set-PSSessionConfiguration -Name Test -TransportOption $o
Tryb buforowania danych wyjściowych
Tryb buforowania danych wyjściowych programu PSSession określa sposób zarządzania danymi wyjściowymi poleceń, gdy bufor wyjściowy pliku PSSession jest pełny.
W rozłączonej sesji tryb buforowania danych wyjściowych skutecznie określa, czy polecenie będzie nadal uruchamiane podczas rozłączania sesji.
Prawidłowe wartości są następujące:
Block
(wartość domyślna) — gdy bufor wyjściowy jest pełny, wykonanie jest zawieszone do momentu wyczyszczenia buforu.Block
zachowuje dane, ale może przerwać polecenie.Drop
- Gdy bufor wyjściowy jest pełny, wykonywanie będzie kontynuowane. W miarę generowania nowych danych wyjściowych najstarsze dane wyjściowe są odrzucane. W przypadku używania wartości przekierujDrop
dane wyjściowe do pliku. Ta wartość jest zalecana w przypadku rozłączonych sesji.
Właściwość OutputBufferingMode konfiguracji sesji określa domyślny tryb buforowania sesji korzystających z konfiguracji sesji.
Aby znaleźć wartość konfiguracji sesji elementu OutputBufferingMode, możesz użyć jednego z następujących formatów poleceń:
(Get-PSSessionConfiguration <ConfigurationName>).OutputBufferingMode
Get-PSSessionConfiguration | Format-Table Name, OutputBufferingMode
Wartość domyślną można zastąpić w konfiguracji sesji i ustawić tryb buforowania danych wyjściowych programu PSSession podczas tworzenia sesji PSSession, po rozłączeniu i ponownym połączeniu.
Jeśli jesteś członkiem grupy Administratorzy na komputerze zdalnym, możesz utworzyć i zmienić tryb buforowania danych wyjściowych konfiguracji sesji.
Aby utworzyć usługę PSSession z trybem buforowania danych wyjściowych programu Drop
, utwórz zmienną $PSSessionOption
preferencji, w której wartość właściwości OutputBufferingMode to Drop
.
Podczas tworzenia serwerów PSSessions wartości w $PSSessionOption
zmiennej mają pierwszeństwo przed wartościami w konfiguracji sesji.
Na przykład:
$PSSessionOption = New-PSSessionOption -OutputBufferingMode Drop
Użyj parametru New-PSSessionOption
OutputBufferingMode polecenia cmdlet, aby utworzyć opcję sesji z wartością Drop
. Następnie użyj obiektu PSSessionOption jako wartości parametru New-PSSession
SessionOption poleceń cmdlet lub Invoke-Command
.
Wartości ustawione podczas tworzenia sesji mają pierwszeństwo przed wartościami ustawionymi w zmiennej $PSSessionOption
preferencji i konfiguracji sesji.
Na przykład:
$o = New-PSSessionOption -OutputBufferingMode Drop
New-PSSession -SessionOption $o
Aby zmienić tryb buforowania danych wyjściowych programu PSSession podczas rozłączania, użyj parametru Disconnect-PSSession
OutputBufferingMode polecenia cmdlet.
Na przykład:
Disconnect-PSSession -OutputBufferingMode Drop
Aby zmienić tryb buforowania danych wyjściowych podczas ponownego nawiązywania połączenia, użyj parametru New-PSSessionOption
OutputBufferingMode polecenia cmdlet. Następnie użyj opcji sesji w wartości parametru SessionOption wartości Connect-PSSession
lub Receive-PSSession
.
Na przykład:
$o = New-PSSessionOption -OutputBufferingMode Drop
Connect-PSSession -ComputerName Server01 -Name Test -SessionOption $o
Aby utworzyć konfigurację sesji z domyślnym trybem buforowania danych wyjściowych Drop
programu , użyj parametru New-PSTransportOption
OutputBufferingMode polecenia cmdlet, aby utworzyć obiekt opcji transportu z wartością Drop
. Następnie użyj opcji transportu w wartości parametru TransportOption .Register-PSSessionConfiguration
Na przykład:
$o = New-PSTransportOption -OutputBufferingMode Drop
Register-PSSessionConfiguration -Name Test -TransportOption $o
Aby zmienić domyślny tryb buforowania danych wyjściowych konfiguracji sesji, użyj parametru New-PSTransportOption
OutputBufferingMode polecenia cmdlet, aby utworzyć opcję transportu z wartością Drop
. Następnie użyj opcji Transport w wartości parametru SessionOption .Set-PSSessionConfiguration
Na przykład:
$o = New-PSTransportOption -OutputBufferingMode Drop
Set-PSSessionConfiguration -Name Test -TransportOption $o
Rozłączanie sesji sprzężenia zwrotnego
Sesje sprzężenia zwrotnego lub sesje lokalne to sesje PSSession, które pochodzą i kończą się na tym samym komputerze. Podobnie jak w przypadku innych serwerów PSSession, aktywne sesje sprzężenia zwrotnego są utrzymywane na komputerze na zdalnym końcu połączenia (komputera lokalnego), dzięki czemu można odłączyć się od sesji sprzężenia zwrotnego i ponownie nawiązać połączenie z nimi.
Domyślnie sesje sprzężenia zwrotnego są tworzone przy użyciu tokenu zabezpieczeń sieci, który nie zezwala na uruchamianie poleceń w sesji w celu uzyskania dostępu do innych komputerów. Możesz ponownie nawiązać połączenie z sesjami sprzężenia zwrotnego, które mają token zabezpieczeń sieci z dowolnej sesji na komputerze lokalnym lub komputerze zdalnym.
Jeśli jednak używasz parametru New-PSSession
EnableNetworkAccess polecenia cmdlet , Enter-PSSession
lub Invoke-Command
polecenia cmdlet, sesja sprzężenia zwrotnego zostanie utworzona z interaktywnym tokenem zabezpieczającym. Token interaktywny umożliwia wykonywanie poleceń uruchamianych w sesji sprzężenia zwrotnego w celu pobrania danych z innych komputerów.
Sesje sprzężenia zwrotnego można rozłączyć z tokenami interaktywnymi, a następnie ponownie nawiązać z nimi połączenie z tej samej sesji lub innej sesji na tym samym komputerze. Jednak aby zapobiec złośliwemu dostępowi, można ponownie nawiązać połączenie z sesjami sprzężenia zwrotnego za pomocą tokenów interaktywnych tylko z komputera, na którym zostały utworzone.
Oczekiwanie na zadania w sesjach rozłączonych
Polecenie Wait-Job
cmdlet czeka na zakończenie zadania, a następnie powróci do wiersza polecenia lub następnego polecenia. Domyślnie zwraca wartość , jeśli sesja, Wait-Job
w której uruchomiono zadanie, jest rozłączone. Aby skierować Wait-Job
polecenie cmdlet do momentu ponownego połączenia sesji, w stanie Otwarty użyj parametru Force . Aby uzyskać więcej informacji, zobacz Wait-Job (Zadanie oczekiwania).
Niezawodne sesje i niezamierzone rozłączenie
Awaria komputera lub awaria sieci może zostać przypadkowo rozłączona. Program PowerShell próbuje odzyskać narzędzie PSSession, ale jego powodzenie zależy od ważności i czasu trwania przyczyny.
Stan niezamierzonego rozłączenia programu PSSession może być uszkodzony lub zamknięty, ale może być również odłączony. Jeśli wartość Stan jest rozłączona, możesz użyć tych samych technik, aby zarządzać usługą PSSession, tak jak w przypadku, gdy sesja została rozłączona celowo. Można na przykład użyć Connect-PSSession
polecenia cmdlet , aby ponownie nawiązać połączenie z sesją i Receive-PSSession
poleceniem cmdlet, aby uzyskać wyniki poleceń, które zostały uruchomione podczas rozłączenia sesji.
Jeśli zamkniesz (zakończ) sesję, w której utworzono sesję psSession podczas uruchamiania poleceń w programie PSSession, program PowerShell zachowuje psSession w stanie Rozłączone na komputerze zdalnym. Jeśli zamkniesz (zakończ) sesję, w której utworzono program PSSession, ale żadne polecenia nie są uruchomione w programie PSSession, program PowerShell nie próbuje zachować programu PSSession.