Udostępnij za pośrednictwem


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-PSSessioncmdlet , 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 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-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ć 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-PSSessionOptionIdleTimeoutMSec polecenia cmdlet. Następnie użyj opcji sesji w wartości parametru New-PSSessionSessionOption 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-PSSessionIdleTimeoutSec 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-PSTransportOptionIdleTimeoutSec 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-PSTransportOptionIdleTimeoutSec 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 przekieruj Drop 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-PSSessionOptionOutputBufferingMode polecenia cmdlet, aby utworzyć opcję sesji z wartością Drop. Następnie użyj obiektu PSSessionOption jako wartości parametru New-PSSessionSessionOption 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-PSSessionOutputBufferingMode 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-PSSessionOptionOutputBufferingMode 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 Dropprogramu , użyj parametru New-PSTransportOptionOutputBufferingMode 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-PSTransportOptionOutputBufferingMode 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-PSSessionEnableNetworkAccess polecenia cmdlet , Enter-PSSessionlub 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.

Zobacz też