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 nadal działają, gdy sesja jest rozłączona.

Funkcja Rozłączone sesje umożliwia zamknięcie sesji, w której utworzono program PSSession i zamknięcie komputera bez zakłócania działania 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 uruchomiona przy użyciu Enter-PSSession polecenia cmdlet .

Sesje rozłączone można użyć do zarządzania sesjami PSSessions, które zostały rozłączone przypadkowo w wyniku awarii komputera lub sieci.

Polecenia cmdlet rozłączonej sesji

Następujące polecenia cmdlet obsługują funkcję Rozłączone sesje:

  • Connect-PSSession: Połączenie z odłączonym psSession.
  • Disconnect-PSSession: rozłącza 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 plik 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 psSessions są utrzymywane 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, gdy zostanie odłączona od sesji źródłowej lub sesji, w której została utworzona.

Po rozłączeniu programu PSSession program PSSession pozostaje aktywny i jest utrzymywany na komputerze zdalnym. Stan sesji zmienia się z Uruchomiono na Rozłączone. Możesz ponownie nawiązać połączenie z odłączonym modułem 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 rozłączonej sesji PSSession nadal działają nieprzerwanie na komputerze zdalnym, dopóki polecenie nie zostanie zakończone lub bufor wyjściowy wypełni. Aby zapobiec wstrzymaniu polecenia przez pełny bufor wyjściowy, użyj parametru Disconnect-PSSessionOutputBufferingMode poleceń cmdlet , New-PSSessionOptionlub 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 programu PSSession, takiego jak użycie Remove-PSSession polecenia cmdlet, lub do momentu wygaśnięcia limitu czasu bezczynności sesji PSSession. Limit czasu bezczynności usługi PSSession można dostosować przy użyciu parametrów Disconnect-PSSessionIdleTimeoutSec lub IdleTimeout poleceń cmdlet , New-PSSessionOptionlub 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ć usługi PSSessions

Począwszy od programu PowerShell 3.0, Get-PSSession polecenie cmdlet pobiera 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 Połączenie ionUri. Bez parametrów Get-PSSession program pobiera sesję PSSession, która została utworzona w sesji lokalnej, niezależnie od tego, gdzie koń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 jest localhost, pobiera psSessions, Get-PSSession które kończą się i są utrzymywane na komputerze lokalnym. Nie pobiera pssessions na komputerze Server01, nawet jeśli zostały uruchomione na komputerze lokalnym.

Get-PSSession -ComputerName localhost

Aby uzyskać 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ć psSession, użyj parametru Sesja lub potoku obiektu PSSession z New-PSSession poleceń cmdlet lub Get-PSSession do Disconnect-PSSession.

Następujące polecenie powoduje rozłączenie programu PSSession z komputerem Server01. Zwróć uwagę, że wartość właściwości State jest rozłączona, a wartość Availability (Dostępność) to None (Brak).

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 rozłączonymi sesjami

Aby połączyć sesję rozłączoną, użyj Connect-PSSession polecenia cmdlet z parametrami ComputerName lub Połączenie ionUri. Alternatywnie można 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. Usługa PSSession jest teraz otwarta i dostępna.

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 serwer 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ł odłączony.

Receive-PSSession 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 odebrane polecenie zostało uruchomione w bieżącej sesji jako zadanie, zostanie ono domyślnie zwrócone 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 State and Availability odłączonego programu PSSession informują o tym, czy sesja jest dostępna do ponownego nawiązania z nim 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ść Rozłączone 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, czy ponownie nawiązać połączenie z programem PSSession, 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 usługą PSSession, ponieważ jest ona połączona z inną sesją.

Poniższy przykład jest uruchamiany w dwóch sesjach programu PowerShell na tym samym komputerze. Zanotuj zmieniające się wartości właściwości Stan i Dostępność w każdej sesji, ponieważ sesja PSSession jest odłą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

Rozłączone sesje 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 usunięciem.

Wartości limitu czasu bezczynności

PsSessions są bezczynne, gdy wątek pulsu nie otrzymuje odpowiedzi. Rozłączenie sesji sprawia, że jest w stanie bezczynności i uruchamia zegar IdleTimeout , nawet jeśli polecenia są nadal uruchomione w rozłączonej sesji. Program PowerShell uważa, że sesje rozłączone są 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ę dla Twoich potrzeb, 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 Administracja istrators 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.

Limit czasu bezczynności usługi PSSession można ustawić podczas tworzenia sesji 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 uzyskania wyników (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 lubReceive-PSSession.

Aby utworzyć 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 sesji 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ć psSession z określoną wartością limitu czasu bezczynności, użyj parametru IdleTimeoutMSec polecenia New-PSSessionOption cmdlet. Następnie użyj opcji sesji w 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 konfiguracją 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 IdleTimeoutSec polecenia Disconnect-PSSession 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 IdleTimeoutSec i MaxIdleTimeoutSec polecenia New-PSTransportOption cmdlet. Następnie użyj opcji transportu w wartości parametru TransportOption wartości 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 wartości 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 nadal działa, gdy sesja jest rozłączona.

Prawidłowe wartości są następujące:

  • Block (wartość domyślna) — gdy bufor wyjściowy jest pełny, wykonywanie jest zawieszone do momentu, gdy bufor będzie jasny. 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życia Drop wartości przekieruj 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 w trybie 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, podczas rozłączania i ponownego nawiązywania połączenia.

Jeśli jesteś członkiem grupy Administracja istrators na komputerze zdalnym, możesz utworzyć i zmienić tryb buforowania danych wyjściowych konfiguracji sesji.

Aby utworzyć psSession z trybem buforowania danych wyjściowych Drop, utwórz zmienną $PSSessionOption preferencji, w której wartość właściwości OutputBufferingMode to Drop.

Podczas tworzenia sesji 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 SessionOption poleceń New-PSSession cmdlet lub Invoke-Command .

Wartości ustawione podczas tworzenia sesji mają pierwszeństwo przed wartościami ustawionymi w zmiennej $PSSessionOption preferencji i konfiguracją 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 programu PSSession 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 parametru 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 polecenia , użyj parametru DropNew-PSTransportOption OutputBufferingMode polecenia cmdlet, aby utworzyć obiekt opcji transportu z wartością Drop. Następnie użyj opcji transportu w wartości parametru TransportOption wartości 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 parametru 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 (sesje lokalne) to sesje PSSession, które pochodzą i zakończą się na tym samym komputerze. Podobnie jak w przypadku innych sesji 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ę i ponownie nawiązać połączenie z sesjami sprzężenia zwrotnego.

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-PSSessionEnableNetworkAccess polecenia cmdlet , Enter-PSSessionlubInvoke-Command, sesja sprzężenia zwrotnego zostanie utworzona przy użyciu interakcyjnego tokenu zabezpieczającego. 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 z tokenami interaktywnymi tylko z komputera, na którym zostały utworzone.

Oczekiwanie na zadania w rozłączonych sesjach

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 nawiązania połączenia z sesją, w stanie Otwarte użyj parametru Force . Aby uzyskać więcej informacji, zobacz Wait-Job (Zadanie oczekiwania).

Niezawodne sesje i niezamierzone rozłączenie

Awaria sieciowa może zostać przypadkowo odłączona z powodu awarii komputera lub awarii sieci. Program PowerShell próbuje odzyskać pssession, ale jego powodzenie zależy od ważności i czasu trwania przyczyny.

Stan niezamierzonego rozłączenia 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ć pssession, jak w przypadku, gdyby sesja została rozłączona celowo. Na przykład możesz użyć Connect-PSSession polecenia cmdlet , aby ponownie nawiązać połączenie z sesją i Receive-PSSession polecenie cmdlet, aby uzyskać wyniki poleceń uruchomionych 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 stan PSSession w stanie Odłączony na komputerze zdalnym. Jeśli zamkniesz (zakończ) sesję, w której utworzono sesję PSSession, ale żadne polecenia nie są uruchomione w programie PSSession, program PowerShell nie próbuje zachować sesji PSSession.

Zobacz też