about_Remote_Disconnected_Sessions

Krótki opis

Wyjaśnia, jak rozłączyć się i ponownie połączyć z sesją programu PowerShell (PSSession).

Długi opis

Począwszy od programu PowerShell 3.0, można rozłączyć się z pssession i ponownie nawiązać połączenie z PSSession na tym samym lub innym komputerze. Stan sesji jest zachowywany, a polecenia w sesji PSSession są nadal uruchamiane, gdy sesja jest rozłączona.

Funkcja Odłączone sesje jest dostępna tylko wtedy, gdy komputer zdalny jest komputerem Windows z programem PowerShell 3.0 lub nowszym i na komputerze lokalnym jest uruchomiony Windows.

Funkcja Odłączone sesje umożliwia zamknięcie sesji, w której utworzono sesję PSSession, a nawet zamknięcie programu PowerShell i zamknięcie komputera bez zakłócania działania poleceń uruchomionych w sesji PSSession. Odłączone sesje są przydatne w przypadku uruchamiania poleceń, których ukończenie trwa dłuższy czas, i zapewnia elastyczność czasu i urządzenia wymagane przez specjalistów IT.

Nie można odłączyć się od interaktywnej sesji, która została uruchomiona za pomocą Enter-PSSession polecenia cmdlet .

Odłączonych sesji można użyć do zarządzania sesjami PSSessions, które zostały odłączone niezamierzonie w wyniku 300 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 0

W rzeczywistych zastosowaniach funkcja Odłączone sesje umożliwia rozpoczęcie rozwiązywania problemu, zwrócenie uwagi na problem o wyższym priorytecie, a następnie wznowienie pracy nad rozwiązaniem, nawet na innym komputerze w innej lokalizacji.

Polecenia cmdlet sesji bez połączenia

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

  • Connect-PSSession: nawiązuje połączenie z odłączonym pssessionem.
  • Disconnect-PSSession: rozłącza pssession.
  • Get-PSSession: pobiera pssessions na komputerze lokalnym lub komputerach zdalnych.
  • Receive-PSSession: pobiera wyniki poleceń, które zostały uruchomione w sesjach rozłączonych.
  • Invoke-Command: Parametr InDisconnectedSession tworzy pssession i rozłącza się natychmiast.

Jak działa funkcja Odłączone sesje

Począwszy od programu PowerShell 3.0, sesje PSSessions są niezależne od sesji, w których są tworzone. Aktywne sesje PSSessions są utrzymywane na komputerze zdalnym lub po stronie serwera połączenia, nawet jeśli sesja, w której utworzono sesję PSSession, zostanie zamknięta i komputer inicjatora zostanie zamknięty lub odłączony od sieci.

W programie PowerShell 2.0 sesja PSSession jest usuwana z komputera zdalnego po odłączeniu go od sesji pochodzącej lub zakończenia sesji, w której została utworzona.

Po rozłączeniu sesji PSSession pssession pozostaje aktywny i jest utrzymywana na komputerze zdalnym. Stan sesji zmieni się z Uruchomiona na Rozłączona. Możesz ponownie nawiązać połączenie z odłączonym sesją PSSession z bieżącej sesji lub z innej sesji na tym samym komputerze lub z innego komputera. Komputer zdalny, który obsługuje sesję, musi być uruchomiony i połączony z siecią.

Polecenia w odłączonym sesji PSSession są nadal uruchamiane na komputerze zdalnym do momentu ukończenia polecenia lub wypełnienia buforu wyjściowego. Aby zapobiec wstrzymaniu polecenia przez pełny bufor danych wyjściowych, użyj parametru OutputBufferingMode Disconnect-PSSessionpoleceń cmdlet , New-PSSessionOptionlub New-PSTransportOption .

Odłączone sesje są utrzymywane w stanie rozłączenia na komputerze zdalnym. Są one dostępne do ponownego nawiązania połączenia, dopóki nie usuniesz pssession( Remove-PSSession na przykład za pomocą polecenia cmdlet) lub do momentu wygaśnięcia limitu czasu bezczynności pssession. Limit czasu bezczynności dla polecenia PSSession można dostosować przy użyciu parametrów IdleTimeoutSec lub IdleTimeout Disconnect-PSSessionpolecenia cmdlet , New-PSSessionOptionlub New-PSTransportOption .

Inny użytkownik może połączyć się z utworzonymi poświadczeniami programu PSSessions, ale tylko wtedy, RunAs gdy może podać poświadczenia użyte do utworzenia sesji lub użyć poświadczeń konfiguracji sesji.

Jak uzyskać program PSSessions

Począwszy od programu PowerShell 3.0, Get-PSSession polecenie cmdlet pobiera program PSSessions na komputerze lokalnym i komputerach zdalnych. Można również pobrać sesje PSSessions, które zostały utworzone w bieżącej sesji.

Aby uzyskać program PSSessions na komputerze lokalnym lub komputerach zdalnych, użyj parametrów ComputerName lub ConnectionUri . Bez parametrów pobiera Get-PSSession sesję PSSession, która została utworzona w sesji lokalnej, niezależnie od tego, gdzie zakończą działanie.

Podczas uzyskiwania programu PSSessions należy je poszukać na komputerze, na którym są one utrzymywane, czyli komputerze zdalnym lub po stronie serwera.

Jeśli na przykład utworzysz sesję PSSession na komputerze Server01, pobierz sesję z komputera Server01. Jeśli tworzysz sesję PSSession z innego komputera do komputera lokalnego, pobierz sesję z komputera lokalnego.

W poniższej sekwencji poleceń pokazano, jak działa Get-PSSession program .

Pierwsze polecenie tworzy sesję z komputerem 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 uzyskać sesję, użyj parametru ComputerName o Get-PSSession wartości Server01.

Get-PSSession -ComputerName Server01
Id Name      ComputerName  State    ConfigurationName     Availability
-- ----      ------------  -----    -----------------     ------------
 2 Session2  Server01      Opened   Microsoft.PowerShell     Available

Jeśli wartość parametru ComputerName Get-PSSession parametru to localhost, Get-PSSession program pobiera program PSSessions, które zakończą działanie o i są utrzymywane na komputerze lokalnym. Na komputerze Server01 nie są już one uruchomione, 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 program Get-PSSession 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

Aby odłączyć pssession, użyj Disconnect-PSSession polecenia cmdlet . Aby zidentyfikować sesję PSSession, użyj parametru Session lub potoku pssession New-PSSession z lub Get-PSSession polecenia cmdlet do Disconnect-PSSession.

Następujące polecenie rozłącza pssession z komputerem Server01. Zwróć uwagę, że wartość właściwości State to Disconnected ( Stan), a właściwość 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ę bez połączenia, użyj parametru InDisconnectedSession polecenia Invoke-Command cmdlet . Tworzy sesję, uruchamia polecenie i rozłącza się natychmiast, zanim polecenie zwróci jakiekolwiek dane wyjściowe.

Następujące polecenie uruchamia polecenie w Get-WinEvent sesji rozłączonych 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 odłączone sesje

Z sesją, w której utworzono sesję PSSession lub z innych sesji na komputerze lokalnym lub innych komputerach, można nawiązać połączenie z dowolną dostępną sesją PSSession.

Możesz utworzyć polecenie PSSession, uruchomić polecenia w sesji PSSession, rozłączyć się z pssession, zamknąć program PowerShell i zamknąć komputer. Po kilku godzinach możesz otworzyć inny komputer, pobrać polecenie PSSession, nawiązać z nim połączenie i pobrać wyniki poleceń, które zostały uruchomione w sesji PSSession, gdy został odłączony. Następnie możesz uruchomić więcej poleceń w sesji.

Aby połączyć odłączone polecenie PSSession, użyj polecenia Connect-PSSession cmdlet . Użyj parametrów ComputerName lub ConnectionUri , aby zidentyfikować pssession lub potok pssession z Get-PSSession do Connect-PSSession.

Następujące polecenie pobiera sesje na komputerze Server02. Dane wyjściowe obejmują dwie rozłączone sesje, z których obie są dostępne.

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ą Session2. Sesja 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ń, które zostały uruchomione w odłączonym sesji PSSession, użyj Receive-PSSession polecenia cmdlet .

Zamiast używać polecenia Receive-PSSession cmdlet , można Connect-PSSession użyć polecenia . Jeśli sesja jest już ponownie nawiązyowana, Receive-PSSession program pobiera wyniki poleceń, które zostały uruchomione, gdy sesja została odłączona. Jeśli polecenie PSSession jest nadal rozłączone, nawiązuje z nim połączenie, Receive-PSSession a następnie pobiera wyniki poleceń, które zostały uruchomione, gdy zostało odłączone.

Receive-PSSession Może zwracać wyniki w zadaniu (asynchronicznie) lub w programie hosta (synchronicznie). Użyj parametru OutTarget , aby wybrać zadanie lub hosta. Wartość domyślna to Host. Jeśli jednak odbierane polecenie zostało uruchomione w bieżącej sesji jako zadanie, jest ono domyślnie zwracane jako zadanie.

Następujące polecenie używa polecenia Receive-PSSession cmdlet , aby nawiązać połączenie z sesją PSSession na komputerze Server02 Get-WinEvent i pobrać wyniki polecenia, które uruchomiono w sesji Session3. Polecenie używa parametru OutTarget w celu uzyskania 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 polecenia Receive-Job 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ść odłączonego sesji PSSession informują, czy sesja jest dostępna do ponownego nawiązania z nim połączenia.

Gdy sesja PSSession jest połączona z bieżącą sesją, jej stan to Otwarte , a jego dostępność to Dostępne. Po rozłączeniu się z sesji PSSession stan sesji PSSession ma stan Disconnected (Odłączony), a jego dostępność to None (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 on być połączony z inną sesją.

Aby określić, czy można nawiązać połączenie z pssession, użyj właściwości Availability. Wartość Brak wskazuje, że można nawiązać połączenie z sesją. Wartość Zajęta wskazuje, że nie można nawiązać połączenia z sesją 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. 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 nawiązywana.

# 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
# Idle Timeout

Odłączone sesje są utrzymywane na komputerze zdalnym, dopóki nie zostaną usunięte, Remove-PSSession na przykład za pomocą polecenia cmdlet lub przejdą. Właściwość IdleTimeout sesji PSSession określa, jak długo jest utrzymywana sesja rozłączona, zanim zostanie usunięta.

PsSessions są bezczynne, gdy wątek pulsu nie odbiera odpowiedzi. Odłączenie sesji powoduje, że jest ona bezczynna i uruchamia zegar IdleTimeout , nawet jeśli polecenia są nadal uruchomione w sesji rozłączenia. Program PowerShell uznaje rozłączone sesje 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, że zużywa niepotrzebne zasoby na komputerze zdalnym.

Właściwość IdleTimeoutMs konfiguracji sesji określa domyślny limit czasu bezczynności sesji, które używają konfiguracji sesji. Wartość domyślną można przesłonić, ale wartość, która zostanie przez Ciebie używania, nie może przekroczyć właściwości MaxIdleTimeoutMs konfiguracji sesji.

Aby znaleźć wartość wartości IdleTimeoutMs i MaxIdleTimeoutMs konfiguracji sesji, użyj następującego formatu polecenia.

Get-PSSessionConfiguration |
  Format-Table Name, IdleTimeoutMs, MaxIdleTimeoutMs

Możesz przesłonić wartość domyślną w konfiguracji sesji i ustawić limit czasu bezczynności sesji PSSession podczas tworzenia sesji PSSession i po rozłączeniu.

Jeśli jesteś członkiem grupy Administratorzy na komputerze zdalnym, możesz utworzyć i zmienić właściwości IdleTimeoutMs i MaxIdleTimeoutMs konfiguracji sesji.

Wartości limitu czasu bezczynności

Wartość limitu czasu bezczynności konfiguracji sesji i opcji sesji jest w milisekundach. Wartość limitu czasu bezczynności sesji i opcji konfiguracji sesji wynosi w sekundach.

Limit czasu bezczynności pssession można ustawić podczas tworzenia pssession (New-PSSession, Invoke-Command) i po rozłączeniu z nim (Disconnect-PSSession). Nie można jednak zmienić wartości IdleTimeout podczas nawiązywania połączenia z pssession (Connect-PSSession) ani uzyskania wyników (Receive-PSSession).

Receive-PSSession Polecenia Connect-PSSession cmdlet i mają parametr SessionOption, który przyjmuje obiekt SessionOption, New-PSSessionOption taki jak zwracany przez polecenie cmdlet. Wartość IdleTimeout w obiekcie SessionOption i wartość IdleTimeout $PSSessionOption w zmiennej preferencji nie zmieniają wartości IdleTimeout pssession Connect-PSSession w poleceniu lub Receive-PSSession .

Aby utworzyć pssession z określonej 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 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 na 48 godzin:

$PSSessionOption = New-PSSessionOption -IdleTimeoutMSec 172800000

Aby utworzyć pssession z określoną wartością limitu czasu bezczynności, użyj parametru IdleTimeoutMSec New-PSSessionOption polecenia cmdlet. Następnie użyj opcji session w wartości parametru SessionOption polecenia New-PSSession cmdlet lub Invoke-Command .

Wartości ustawione podczas tworzenia sesji mają pierwszeństwo $PSSessionOption przed wartościami ustawionymi w zmiennej preferencji i konfiguracji sesji.

Na przykład:

$o = New-PSSessionOption -IdleTimeoutMSec 172800000
New-PSSession -SessionOption $o

Aby zmienić limit czasu bezczynności pssession podczas rozłączania, użyj parametru IdleTimeoutSec Disconnect-PSSession 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 IdleTimeoutSec i MaxIdleTimeoutSec New-PSTransportOption 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 IdleTimeoutSec i MaxIdleTimeoutSec New-PSTransportOption 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 pssession określa sposób zarządzania danych wyjściowych polecenia, gdy bufor danych wyjściowych PSSession jest pełny.

W sesji bez połączenia tryb buforowania danych wyjściowych skutecznie określa, czy polecenie będzie nadal działać, gdy sesja jest rozłączona.

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

  • Blokuj. Gdy bufor wyjściowy jest pełny, wykonywanie jest wstrzymane do momentu wyczyszczenia buforu. Wartość domyślna.
  • Upuść. Gdy bufor wyjściowy jest pełny, wykonywanie jest kontynuowane. Podczas generowania nowych danych wyjściowych najstarsze dane wyjściowe są odrzucane.

Blokuj zachowuje dane, ale może przerwać polecenie. Wartość Drop umożliwia ukończenie polecenia, chociaż dane mogą zostać utracone. W przypadku użycia wartości Drop przekieruj dane wyjściowe polecenia do pliku na dysku. Ta wartość jest zalecana w przypadku rozłączonych sesji.

Właściwość OutputBufferingMode konfiguracji sesji określa domyślny tryb buforowania danych wyjściowych sesji, które używają konfiguracji sesji.

Aby znaleźć wartość konfiguracji sesji OutputBufferingMode, można użyć jednego z następujących formatów poleceń:

(Get-PSSessionConfiguration <ConfigurationName>).OutputBufferingMode
Get-PSSessionConfiguration | Format-Table Name, OutputBufferingMode

Możesz przesłonić wartość domyślną w konfiguracji sesji i ustawić tryb buforowania danych wyjściowych sesji 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ć PSSession z trybem buforowania danych wyjściowych Drop, utwórz zmienną preferencji, $PSSessionOption w której wartość właściwości OutputBufferingMode to Drop.

Podczas tworzenia sesji PSSessions wartości w $PSSessionOption zmiennej mają pierwszeństwo przed wartościami w konfiguracji sesji.

Na przykład:

$PSSessionOption = New-PSSessionOption -OutputBufferingMode Drop

Aby utworzyć pssession z trybem buforowania danych wyjściowych Drop, użyj OutputBufferingMode New-PSSessionOption parametru polecenia cmdlet, aby utworzyć opcję sesji z wartością Drop. Następnie użyj opcji session w wartości parametru SessionOption polecenia New-PSSession cmdlet lub Invoke-Command .

Wartości ustawione podczas tworzenia sesji mają pierwszeństwo $PSSessionOption przed wartościami ustawionymi w zmiennej preferencji i konfiguracji sesji.

Na przykład:

$o = New-PSSessionOption -OutputBufferingMode Drop
New-PSSession -SessionOption $o

Aby zmienić tryb buforowania danych wyjściowych pssession podczas rozłączania, użyj parametru OutputBufferingMode Disconnect-PSSession polecenia cmdlet.

Na przykład:

Disconnect-PSSession -OutputBufferingMode Drop

Aby zmienić tryb buforowania danych wyjściowych sesji PSSession podczas ponownego nawiązywania połączenia, użyj parametru OutputBufferingMode New-PSSessionOption polecenia cmdlet, aby utworzyć opcję sesji z wartością Drop. Następnie użyj opcji session w wartości parametru SessionOption lub Connect-PSSession 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, użyj parametru OutputBufferingMode New-PSTransportOption 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 OutputBufferingMode New-PSTransportOption 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 PSSessions, które pochodzą i zakończą działanie na tym samym komputerze. Podobnie jak w przypadku innych sesji PSSessions aktywne sesje sprzężenia zwrotnego są utrzymywane na komputerze na zdalnym końcu połączenia (komputerze lokalnym), dzięki czemu można odłączyć się i ponownie połączyć z sesjami sprzężenia zwrotnego.

Domyślnie sesje sprzężenia zwrotnego są tworzone przy użyciu tokenu zabezpieczającego sieci, który nie zezwala na uruchamianie poleceń w sesji w celu uzyskania dostępu do innych komputerów. Możesz ponownie połączyć się z sesjami sprzężenia zwrotnego, które mają token zabezpieczający sieci z dowolnej sesji na komputerze lokalnym lub komputerze zdalnym.

Jeśli jednak używasz parametru EnableNetworkAccess New-PSSessionpolecenia cmdlet , Enter-PSSession``Invoke-Command lub , sesja sprzężenia zwrotnego jest tworzona przy użyciu interakcyjnego tokenu zabezpieczającego. Token interaktywny umożliwia poleceń uruchamianych w sesji sprzężenia zwrotnego w celu uzyskania danych z innych komputerów.

Sesje sprzężenia zwrotnego można rozłączyć za pomocą tokenów interaktywnych, a następnie ponownie połączyć się z nimi z tej samej sesji lub innej sesji na tym samym komputerze. Jednak aby zapobiec złośliwemu dostępowi, można ponownie połączyć się z sesjami sprzężenia zwrotnego za pomocą tokenów interaktywnych tylko z komputera, na którym zostały utworzone.

Oczekiwanie na zadania w sesjach bez połączenia

Polecenie Wait-Job cmdlet czeka na ukończenie zadania, a następnie powraca do wiersza polecenia lub następnego polecenia. Domyślnie zwraca wartość , Wait-Job jeśli sesja, w której jest uruchomione zadanie, jest rozłączona. Aby skierować Wait-Job polecenie cmdlet do oczekiwania na ponowne nawiązanie połączenia z sesją, w stanie Otwarte użyj parametru Force . Aby uzyskać więcej informacji, zobacz Wait-Job.

Niezawodne sesje i przypadkowe rozłączanie

Awaria systemu PSSession może zostać niezamierzonie 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 sesji PSSession może być uszkodzony lub zamknięty, ale może również być odłączony. Jeśli wartość Stan jest odłączony, można użyć tych samych technik do zarządzania PSSession jak gdyby sesja została rozłączona celowo. Na przykład można użyć Connect-PSSession polecenia cmdlet Receive-PSSession , aby ponownie nawiązać połączenie z sesją, oraz polecenia cmdlet w celu uzyskania wyników poleceń, które zostały uruchomione podczas odłączania sesji.

Jeśli zamkniesz (zamknij) sesję, w której utworzono sesję PSSession, gdy polecenia są uruchomione w sesji PSSession, program PowerShell utrzymuje pssession w stanie Disconnected na komputerze zdalnym. Jeśli zamkniesz (zamknij) sesję, w której utworzono sesję PSSession, ale w sesji PSSession nie są uruchomione żadne polecenia, program PowerShell nie podejmie próby obsługi sesji PSSession.

Zobacz też