Receive-PSSession

Pobiera wyniki poleceń w sesjach rozłączonych

Składnia

Receive-PSSession
       [-Session] <PSSession>
       [-OutTarget <OutTarget>]
       [-JobName <String>]
       [-WhatIf]
       [-Confirm]
       [<CommonParameters>]
Receive-PSSession
       [-Id] <Int32>
       [-OutTarget <OutTarget>]
       [-JobName <String>]
       [-WhatIf]
       [-Confirm]
       [<CommonParameters>]
Receive-PSSession
       [-ComputerName] <String>
       [-ApplicationName <String>]
       [-ConfigurationName <String>]
       -Name <String>
       [-OutTarget <OutTarget>]
       [-JobName <String>]
       [-Credential <PSCredential>]
       [-Authentication <AuthenticationMechanism>]
       [-CertificateThumbprint <String>]
       [-Port <Int32>]
       [-UseSSL]
       [-SessionOption <PSSessionOption>]
       [-WhatIf]
       [-Confirm]
       [<CommonParameters>]
Receive-PSSession
       [-ComputerName] <String>
       [-ApplicationName <String>]
       [-ConfigurationName <String>]
       -InstanceId <Guid>
       [-OutTarget <OutTarget>]
       [-JobName <String>]
       [-Credential <PSCredential>]
       [-Authentication <AuthenticationMechanism>]
       [-CertificateThumbprint <String>]
       [-Port <Int32>]
       [-UseSSL]
       [-SessionOption <PSSessionOption>]
       [-WhatIf]
       [-Confirm]
       [<CommonParameters>]
Receive-PSSession
       [-ConfigurationName <String>]
       [-ConnectionUri] <Uri>
       [-AllowRedirection]
       -Name <String>
       [-OutTarget <OutTarget>]
       [-JobName <String>]
       [-Credential <PSCredential>]
       [-Authentication <AuthenticationMechanism>]
       [-CertificateThumbprint <String>]
       [-SessionOption <PSSessionOption>]
       [-WhatIf]
       [-Confirm]
       [<CommonParameters>]
Receive-PSSession
       [-ConfigurationName <String>]
       [-ConnectionUri] <Uri>
       [-AllowRedirection]
       -InstanceId <Guid>
       [-OutTarget <OutTarget>]
       [-JobName <String>]
       [-Credential <PSCredential>]
       [-Authentication <AuthenticationMechanism>]
       [-CertificateThumbprint <String>]
       [-SessionOption <PSSessionOption>]
       [-WhatIf]
       [-Confirm]
       [<CommonParameters>]
Receive-PSSession
       [-InstanceId] <Guid>
       [-OutTarget <OutTarget>]
       [-JobName <String>]
       [-WhatIf]
       [-Confirm]
       [<CommonParameters>]
Receive-PSSession
       [-Name] <String>
       [-OutTarget <OutTarget>]
       [-JobName <String>]
       [-WhatIf]
       [-Confirm]
       [<CommonParameters>]

Opis

Polecenie Receive-PSSession cmdlet pobiera wyniki poleceń uruchomionych w sesjach programu PowerShell (PSSession), które zostały rozłączone. Jeśli sesja jest obecnie połączona, Receive-PSSession pobiera wyniki poleceń, które były uruchamiane po rozłączeniu sesji. Jeśli sesja jest nadal rozłączona, Receive-PSSession nawiązuje połączenie z sesją, wznawia wszystkie wstrzymane polecenia i pobiera wyniki poleceń uruchomionych w sesji.

To polecenie cmdlet zostało wprowadzone w programie PowerShell 3.0.

Oprócz polecenia lub zamiast polecenia można użyć Receive-PSSession elementu Connect-PSSession . Receive-PSSession program może nawiązać połączenie z dowolną odłączona lub ponownie podłączona sesja, która została uruchomiona w innych sesjach lub na innych komputerach.

Receive-PSSession działa na psSessions , które zostały rozłączone celowo przy użyciu Disconnect-PSSession polecenia cmdlet lub Invoke-CommandInDisconnectedSession parametru. Lub rozłączone przypadkowo przez przerwę w sieci.

Jeśli używasz Receive-PSSession polecenia cmdlet do nawiązywania połączenia z sesją, w której żadne polecenia nie są uruchomione lub wstrzymane, Receive-PSSession nawiązuje połączenie z sesją, ale nie zwraca żadnych danych wyjściowych ani błędów.

Aby uzyskać więcej informacji na temat funkcji Rozłączone sesje, zobacz about_Remote_Disconnected_Sessions.

Niektóre przykłady używają splattingu, aby zmniejszyć długość wiersza i zwiększyć czytelność. Aby uzyskać więcej informacji, zobacz about_Splatting.

Przykłady

Przykład 1: Połączenie do psSession

Ten przykład nawiązuje połączenie z sesją na komputerze zdalnym i pobiera wyniki poleceń uruchomionych w sesji.

Receive-PSSession -ComputerName Server01 -Name ITTask

Parametr Receive-PSSession określa komputer zdalny z parametrem ComputerName . Parametr Name identyfikuje sesję ITTask na komputerze Server01. Przykład pobiera wyniki poleceń uruchomionych w sesji ITTask.

Ponieważ polecenie nie używa parametru OutTarget , wyniki są wyświetlane w wierszu polecenia.

Przykład 2. Pobieranie wyników wszystkich poleceń w sesjach rozłączonych

Ten przykład pobiera wyniki wszystkich poleceń uruchomionych we wszystkich rozłączonych sesjach na dwóch komputerach zdalnych.

Jeśli jakakolwiek sesja nie została rozłączona lub nie uruchamia poleceń, Receive-PSSession nie łączy się z sesją i nie zwraca żadnych danych wyjściowych ani błędów.

Get-PSSession -ComputerName Server01, Server02 | Receive-PSSession

Get-PSSession używa parametru ComputerName do określenia komputerów zdalnych. Obiekty są wysyłane w dół potoku do Receive-PSSessionelementu .

Przykład 3. Pobieranie wyników skryptu uruchomionego w sesji

W tym przykładzie Receive-PSSession użyto polecenia cmdlet , aby uzyskać wyniki skryptu uruchomionego w sesji komputera zdalnego.

$parms = @{
  ComputerName = "Server01"
  Name = "ITTask"
  OutTarget = "Job"
  JobName = "ITTaskJob01"
  Credential = "Domain01\Admin01"
}
Receive-PSSession @parms

Id     Name            State         HasMoreData     Location
--     ----            -----         -----------     --------
16     ITTaskJob01     Running       True            Server01

Polecenie używa parametrów ComputerName i Name do identyfikowania rozłączonej sesji. Używa parametru OutTarget z wartością Job, aby kierować Receive-PSSession wyniki w celu zwrócenia wyników jako zadania. Parametr JobName określa nazwę zadania w ponownie połączonej sesji. Parametr Credential uruchamia Receive-PSSession polecenie przy użyciu uprawnień administratora domeny.

Dane wyjściowe pokazują, że Receive-PSSession wyniki zostały zwrócone jako zadanie w bieżącej sesji. Aby uzyskać wyniki zadania, użyj Receive-Job polecenia

Przykład 4. Uzyskiwanie wyników po awarii sieci

W tym przykładzie Receive-PSSession użyto polecenia cmdlet , aby uzyskać wyniki zadania po awarii sieci zakłóca połączenie sesji. Program PowerShell automatycznie próbuje ponownie połączyć sesję raz na sekundę przez następne cztery minuty i porzuci nakład pracy tylko wtedy, gdy wszystkie próby w interwale czterech minut nie powiedzie się.

PS> $s = New-PSSession -ComputerName Server01 -Name AD -ConfigurationName ADEndpoint
PS> $s

Id  Name   ComputerName    State        ConfigurationName     Availability
--  ----   ------------    -----        -----------------     ------------
8   AD      Server01       Opened       ADEndpoint               Available


PS> Invoke-Command -Session $s -FilePath \\Server12\Scripts\SharedScripts\New-ADResolve.ps1

Running "New-ADResolve.ps1"

# Network outage
# Restart local computer
# Network access is not re-established within 4 minutes


PS> Get-PSSession -ComputerName Server01

Id  Name   ComputerName    State          ConfigurationName      Availability
--  ----   ------------    -----          -----------------      ------------
1  Backup  Server01        Disconnected   Microsoft.PowerShell           None
8  AD      Server01        Disconnected   ADEndpoint                     None


PS> Receive-PSSession -ComputerName Server01 -Name AD -OutTarget Job -JobName AD

Job Id   Name      State         HasMoreData     Location
--       ----      -----         -----------     --------
16       ADJob     Running       True            Server01


PS> Get-PSSession -ComputerName Server01

Id  Name    ComputerName    State         ConfigurationName     Availability
--  ----    ------------    -----         -----------------     ------------
1  Backup   Server01        Disconnected  Microsoft.PowerShell          Busy
8  AD       Server01        Opened        ADEndpoint               Available

Polecenie New-PSSession cmdlet tworzy sesję na komputerze Server01 i zapisuje sesję w zmiennej $s . W $s zmiennej jest wyświetlana wartość Stan jest otwarta, a dostępność jest dostępna. Te wartości wskazują, że masz połączenie z sesją i możesz uruchamiać polecenia w sesji.

Polecenie Invoke-Command cmdlet uruchamia skrypt w sesji w zmiennej $s . Skrypt rozpoczyna uruchamianie i zwracanie danych, ale występuje awaria sieci, która przerywa sesję. Użytkownik musi zakończyć sesję i ponownie uruchomić komputer lokalny.

Po ponownym uruchomieniu komputera użytkownik uruchamia program PowerShell i uruchamia Get-PSSession polecenie w celu pobrania sesji na komputerze Server01. Dane wyjściowe pokazują, że sesja usługi AD nadal istnieje na komputerze Server01. Stan wskazuje, że sesja usługi AD jest rozłączona. Wartość Availability (Brak) wskazuje, że sesja nie jest połączona z żadnymi sesjami klienta.

Polecenie Receive-PSSession cmdlet ponownie łączy się z sesją usługi AD i pobiera wyniki skryptu uruchomionego w sesji. Polecenie używa parametru OutTarget , aby zażądać wyników w zadaniu o nazwie ADJob. Polecenie zwraca obiekt zadania, a dane wyjściowe wskazują, że skrypt jest nadal uruchomiony.

Polecenie Get-PSSession cmdlet służy do sprawdzania stanu zadania. Dane wyjściowe potwierdzają, że Receive-PSSession polecenie cmdlet ponownie nawiązało połączenie z sesją usługi AD , która jest teraz otwarta i dostępna dla poleceń. Skrypt wznowił wykonywanie i otrzymuje wyniki skryptu.

Przykład 5. Ponowne nawiązywanie połączenia z rozłączonymi sesjami

W tym przykładzie Receive-PSSession użyto polecenia cmdlet , aby ponownie nawiązać połączenie z sesjami, które zostały celowo rozłączone i uzyskać wyniki zadań uruchomionych w sesjach.

PS> $parms = @{
      InDisconnectedSession = $True
      ComputerName = "Server01", "Server02", "Server30"
      FilePath = "\\Server12\Scripts\SharedScripts\Get-BugStatus.ps1"
      Name = "BugStatus"
      SessionOption = @{IdleTimeout = 86400000}
      ConfigurationName = "ITTasks"
    }
PS> Invoke-Command @parms
PS> Exit


PS> $s = Get-PSSession -ComputerName Server01, Server02, Server30 -Name BugStatus
PS> $s

Id  Name   ComputerName    State         ConfigurationName     Availability
--  ----   ------------    -----         -----------------     ------------
1  ITTask  Server01        Disconnected  ITTasks                       None
8  ITTask  Server02        Disconnected  ITTasks                       None
2  ITTask  Server30        Disconnected  ITTasks                       None


PS> $Results = Receive-PSSession -Session $s
PS> $s

Id  Name   ComputerName    State         ConfigurationName     Availability
--  ----   ------------    -----         -----------------     ------------
1  ITTask  Server01        Opened        ITTasks                  Available
8  ITTask  Server02        Opened        ITTasks                  Available
2  ITTask  Server30        Opened        ITTasks                  Available


PS> $Results

Bug Report - Domain 01
----------------------
ComputerName          BugCount          LastUpdated
--------------        ---------         ------------
Server01              121               Friday, December 30, 2011 5:03:34 PM

Polecenie Invoke-Command cmdlet uruchamia skrypt na trzech komputerach zdalnych. Ponieważ skrypt zbiera i podsumowyuje dane z wielu baz danych, wykonanie skryptu często trwa dłuższy czas. Polecenie używa parametru InDisconnectedSession , który uruchamia skrypty, a następnie natychmiast rozłącza sesje. Parametr SessionOption rozszerza wartość IdleTimeout rozłączonej sesji. Odłączone sesje są uznawane za bezczynne od momentu ich rozłączenia. Ważne jest, aby ustawić limit czasu bezczynności na tyle długo, aby polecenia mogły być ukończone i można ponownie nawiązać połączenie z sesją. Można ustawić wartość IdleTimeout tylko podczas tworzenia sesji PSSession i zmieniać ją tylko wtedy, gdy odłączysz się od niego. Nie można zmienić wartości IdleTimeout podczas nawiązywania połączenia z usługą PSSession lub odbierania wyników. Po uruchomieniu polecenia użytkownik zamyka program PowerShell i zamyka komputer.

Następnego dnia użytkownik wznawia działanie systemu Windows, uruchamia program PowerShell i używa Get-PSSession go do pobierania sesji, w których uruchomiono skrypty. Polecenie identyfikuje sesje według nazwy komputera, nazwy sesji i nazwy konfiguracji sesji i zapisuje sesje w zmiennej $s . Wartość zmiennej $s jest wyświetlana i pokazuje, że sesje są rozłączone, ale nie są zajęte.

Polecenie Receive-PSSession cmdlet nawiązuje połączenie z sesjami w zmiennej $s i pobiera wyniki. Polecenie zapisuje wyniki w zmiennej $Results . Zmienna jest wyświetlana $s i pokazuje, że sesje są połączone i dostępne dla poleceń.

Wyniki skryptu w zmiennej $Results są wyświetlane w konsoli programu PowerShell. Jeśli którykolwiek z wyników jest nieoczekiwany, użytkownik może uruchamiać polecenia w sesjach, aby zbadać główną przyczynę.

Przykład 6. Uruchamianie zadania w rozłączonej sesji

W tym przykładzie pokazano, co się stanie z zadaniem uruchomionym w rozłączonej sesji.

PS> $s = New-PSSession -ComputerName Server01 -Name Test
PS> $j = Invoke-Command -Session $s { 1..1500 | Foreach-Object {"Return $_"; sleep 30}} -AsJob
PS> $j

Id     Name           State         HasMoreData     Location
--     ----           -----         -----------     --------
16     Job1           Running       True            Server01


PS> $s | Disconnect-PSSession

Id Name   ComputerName    State         ConfigurationName     Availability
-- ----   ------------    -----         -----------------     ------------
1  Test   Server01        Disconnected  Microsoft.PowerShell          None


PS> $j

Id     Name           State         HasMoreData     Location
--     ----           -----         -----------     --------
16     Job1           Disconnected  True            Server01


PS> Receive-Job $j -Keep

Return 1
Return 2


PS> $s2 = Connect-PSSession -ComputerName Server01 -Name Test
PS> $j2 = Receive-PSSession -ComputerName Server01 -Name Test
PS> Receive-Job $j

Return 3
Return 4

Polecenie New-PSSession cmdlet tworzy sesję Test na komputerze Server01. Polecenie zapisuje sesję w zmiennej $s .

Polecenie Invoke-Command cmdlet uruchamia polecenie w sesji w zmiennej $s . Polecenie używa parametru AsJob do uruchomienia polecenia jako zadania i tworzy obiekt zadania w bieżącej sesji. Polecenie zwraca obiekt zadania zapisany w zmiennej $j . Zmienna $j wyświetla obiekt zadania.

Obiekt sesji w zmiennej $s jest wysyłany w dół potoku do Disconnect-PSSession , a sesja jest rozłączona.

Zmienna jest wyświetlana $j i pokazuje efekt rozłączenia obiektu zadania w zmiennej $j . Stan zadania jest teraz rozłączony.

Element Receive-Job jest uruchamiany w zadaniu w zmiennej $j . Dane wyjściowe pokazują, że zadanie zaczęło zwracać dane wyjściowe przed sesją i zadanie zostało rozłączone.

Polecenie Connect-PSSession cmdlet jest uruchamiane w tej samej sesji klienta. Polecenie ponownie łączy się z sesją testową na komputerze Server01 i zapisuje sesję w zmiennej $s2 .

Polecenie Receive-PSSession cmdlet pobiera wyniki zadania uruchomionego w sesji. Ponieważ polecenie jest uruchamiane w tej samej sesji, Receive-PSSession zwraca wyniki jako zadanie domyślnie i ponownie używa tego samego obiektu zadania. Polecenie zapisuje zadanie w zmiennej $j2 . Polecenie Receive-Job cmdlet pobiera wyniki zadania w zmiennej $j .

Parametry

-AllowRedirection

Wskazuje, że to polecenie cmdlet umożliwia przekierowanie tego połączenia do alternatywnego identyfikatora URI (Uniform Resource Identifier).

Jeśli używasz parametru Połączenie ionURI, zdalna lokalizacja docelowa może zwrócić instrukcję, aby przekierować do innego identyfikatora URI. Domyślnie program PowerShell nie przekierowuje połączeń, ale można użyć tego parametru, aby umożliwić mu przekierowanie połączenia.

Możesz również ograniczyć liczbę przekierowań połączenia, zmieniając wartość opcji maksymalna Połączenie ionRedirectionCount sesji. Użyj parametru New-PSSessionOption MaximumRedirection polecenia cmdlet lub ustaw właściwość Maximum Połączenie ionRedirectionCount zmiennej $PSSessionOption preferencji. Domyślna wartość wynosi 5.

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ApplicationName

Określa aplikację. To polecenie cmdlet łączy się tylko z sesjami korzystającymi z określonej aplikacji.

Wprowadź segment nazwy aplikacji identyfikatora URI połączenia. Na przykład w następującym identyfikatorze URI połączenia WSMan jest nazwą aplikacji: http://localhost:5985/WSMAN.

Nazwa aplikacji sesji jest przechowywana w przestrzeni Runspace.PołączenieWłaściwość ionInfo.AppName sesji.

Wartość parametru służy do wybierania i filtrowania sesji. Nie zmienia aplikacji używanej przez sesję.

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-Authentication

Określa mechanizm używany do uwierzytelniania poświadczeń użytkownika w poleceniu w celu ponownego nawiązania połączenia z rozłączonej sesji. Dopuszczalne wartości tego parametru to:

  • Wartość domyślna
  • Podstawowy
  • Credssp
  • Szyfrowane
  • Kerberos
  • Negocjacja
  • NegotiateWithImplicitCredential

Wartość domyślna to Wartość domyślna.

Aby uzyskać więcej informacji na temat wartości tego parametru, zobacz AuthenticationMechanism Enumeration (Wyliczenie AuthenticationMechanism).

Uwaga

Uwierzytelnianie dostawcy obsługi zabezpieczeń poświadczeń (CredSSP), w którym poświadczenia użytkownika są przekazywane do komputera zdalnego do uwierzytelnienia, jest przeznaczone dla poleceń wymagających uwierzytelniania w więcej niż jednym zasobie, takich jak uzyskiwanie dostępu do zdalnego udziału sieciowego. Ten mechanizm zwiększa ryzyko bezpieczeństwa operacji zdalnej. W przypadku naruszenia zabezpieczeń komputera zdalnego poświadczenia przekazywane do niego mogą służyć do kontrolowania sesji sieciowej.

Type:AuthenticationMechanism
Accepted values:Default, Basic, Negotiate, NegotiateWithImplicitCredential, Credssp, Digest, Kerberos
Position:Named
Default value:Default
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-CertificateThumbprint

Określa certyfikat cyfrowego klucza publicznego (X509) konta użytkownika, które ma uprawnienia do nawiązywania połączenia z rozłączonej sesji. Wprowadź odcisk palca certyfikatu.

Certyfikaty są używane w uwierzytelnianiu opartym na certyfikatach klienta. Certyfikaty mogą być mapowane tylko na konta użytkowników lokalnych i nie działają z kontami domeny.

Aby uzyskać odcisk palca certyfikatu, użyj Get-Item polecenia lub Get-ChildItem na dysku programu PowerShell Cert: .

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ComputerName

Określa komputer, na którym jest przechowywana rozłączona sesja. Sesje są przechowywane na komputerze, który znajduje się po stronie serwera lub odbiera koniec połączenia. Wartość domyślna to komputer lokalny.

Wpisz nazwę NetBIOS, adres IP lub w pełni kwalifikowaną nazwę domeny (FQDN) jednego komputera. Symbole wieloznaczne nie są dozwolone. Aby określić komputer lokalny, wpisz nazwę komputera, kropkę (.), $env:COMPUTERNAMElub localhost.

Type:String
Aliases:Cn
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-ConfigurationName

Określa nazwę konfiguracji sesji. To polecenie cmdlet łączy się tylko z sesjami korzystającymi z określonej konfiguracji sesji.

Wprowadź nazwę konfiguracji lub w pełni kwalifikowany identyfikator URI zasobu dla konfiguracji sesji. Jeśli określisz tylko nazwę konfiguracji, następujący identyfikator URI schematu jest wstępnie utworzony:

http://schemas.microsoft.com/powershell.

Nazwa konfiguracji sesji jest przechowywana we właściwości ConfigurationName sesji.

Wartość parametru służy do wybierania i filtrowania sesji. Nie zmienia konfiguracji sesji używanej przez sesję.

Aby uzyskać więcej informacji na temat konfiguracji sesji, zobacz Informacje o konfiguracjach sesji.

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-Confirm

Monituje o potwierdzenie przed uruchomieniem polecenia cmdlet.

Type:SwitchParameter
Aliases:cf
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ConnectionUri

Określa identyfikator URI, który definiuje punkt końcowy połączenia używany do ponownego nawiązywania połączenia z rozłączonej sesji.

Identyfikator URI musi być w pełni kwalifikowany. Format ciągu jest następujący:

<Transport>://<ComputerName>:<Port>/<ApplicationName>

Wartość domyślna jest następująca:

http://localhost:5985/WSMAN

Jeśli nie określisz identyfikatora URI połączenia, możesz użyć parametrów UseSSL, ComputerName, Port i ApplicationName , aby określić wartości identyfikatora URI połączenia.

Prawidłowe wartości segmentu Transport identyfikatora URI to HTTP i HTTPS. Jeśli określisz identyfikator URI połączenia z segmentem Transport, ale nie określisz portu, sesja zostanie utworzona ze standardowymi portami: 80 dla protokołu HTTP i 443 dla protokołu HTTPS. Aby użyć domyślnych portów komunikacji zdalnej programu PowerShell, określ port 5985 dla protokołu HTTP lub 5986 dla protokołu HTTPS.

Jeśli komputer docelowy przekierowuje połączenie do innego identyfikatora URI, program PowerShell uniemożliwia przekierowanie, chyba że użyjesz parametru AllowRedirection w poleceniu .

Type:Uri
Aliases:URI, CU
Position:0
Default value:http://localhost:5985/WSMAN
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-Credential

Określa konto użytkownika, które ma uprawnienia do nawiązywania połączenia z rozłączonej sesji. Wartość domyślna to użytkownik bieżący.

Wpisz nazwę użytkownika, taką jak User01 lub Domain01\User01, lub wprowadź obiekt PSCredential wygenerowany przez Get-Credential polecenie cmdlet. Jeśli wpiszesz nazwę użytkownika, zostanie wyświetlony monit o wprowadzenie hasła.

Poświadczenia są przechowywane w obiekcie PSCredential , a hasło jest przechowywane jako secureString.

Uwaga

Aby uzyskać więcej informacji na temat ochrony danych SecureString , zobacz Jak bezpieczny jest protokół SecureString?.

Type:PSCredential
Position:Named
Default value:Current user
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Id

Określa identyfikator rozłączonej sesji. Parametr Id działa tylko wtedy, gdy odłączona sesja była wcześniej połączona z bieżącą sesją.

Ten parametr jest prawidłowy, ale nie skuteczny, gdy sesja jest przechowywana na komputerze lokalnym, ale nie została połączona z bieżącą sesją.

Type:Int32
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-InstanceId

Określa identyfikator wystąpienia rozłączonej sesji. Identyfikator wystąpienia to identyfikator GUID, który jednoznacznie identyfikuje psSession na komputerze lokalnym lub zdalnym. Identyfikator wystąpienia jest przechowywany we właściwości InstanceID sesji PSSession.

Type:Guid
Position:Named
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-JobName

Określa przyjazną nazwę zadania, które Receive-PSSession zwraca.

Receive-PSSession Zwraca zadanie, gdy wartość parametru OutTarget to Job lub zadanie uruchomione w rozłączonej sesji zostało uruchomione w bieżącej sesji.

Jeśli zadanie uruchomione w rozłączonej sesji zostało uruchomione w bieżącej sesji, program PowerShell ponownie używa oryginalnego obiektu zadania w sesji i ignoruje wartość parametru JobName .

Jeśli zadanie uruchomione w rozłączonej sesji zostało uruchomione w innej sesji, program PowerShell utworzy nowy obiekt zadania. Używa ona nazwy domyślnej, ale można użyć tego parametru, aby zmienić nazwę.

Jeśli wartość domyślna lub jawna parametru OutTarget nie jest zadaniem, polecenie powiedzie się, ale parametr JobName nie ma wpływu.

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Name

Określa przyjazną nazwę rozłączonej sesji.

Type:String
Position:Named
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-OutTarget

Określa sposób zwracania wyników sesji. Dopuszczalne wartości tego parametru to:

  • Zadanie. Zwraca wyniki asynchronicznie w obiekcie zadania. Możesz użyć parametru JobName , aby określić nazwę lub nową nazwę zadania.
  • Host. Zwraca wyniki do wiersza polecenia (synchronicznie). Jeśli polecenie jest wznawiane lub wyniki składają się z dużej liczby obiektów, odpowiedź może być opóźniona.

Wartość domyślna parametru OutTarget to Host. Jeśli polecenie odbierane w rozłączonej sesji zostało uruchomione w bieżącej sesji, wartością domyślną parametru OutTarget jest formularz, w którym uruchomiono polecenie. Jeśli polecenie zostało uruchomione jako zadanie, domyślnie jest zwracane jako zadanie. W przeciwnym razie jest on domyślnie zwracany do programu hosta.

Zazwyczaj program hosta wyświetla zwracane obiekty w wierszu polecenia bez opóźnień, ale to zachowanie może się różnić.

Type:OutTarget
Accepted values:Default, Host, Job
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Port

Określa port sieciowy komputera zdalnego używany do ponownego nawiązywania połączenia z sesją. Aby nawiązać połączenie z komputerem zdalnym, musi on nasłuchiwać na porcie używanym przez połączenie. Domyślne porty to 5985, czyli port usługi WinRM dla protokołu HTTP i 5986, czyli port usługi WinRM dla protokołu HTTPS.

Przed użyciem portu alternatywnego należy skonfigurować odbiornik WinRM na komputerze zdalnym do nasłuchiwania na tym porcie. Aby skonfigurować odbiornik, wpisz następujące dwa polecenia w wierszu polecenia programu PowerShell:

Remove-Item -Path WSMan:\Localhost\listener\listener* -Recurse

New-Item -Path WSMan:\Localhost\listener -Transport http -Address * -Port \<port-number\>

Nie używaj parametru Port , chyba że jest to konieczne. Port ustawiony w poleceniu ma zastosowanie do wszystkich komputerów lub sesji, na których jest uruchamiane polecenie. Ustawienie alternatywnego portu może uniemożliwić uruchomienie polecenia na wszystkich komputerach.

Type:Int32
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Session

Określa rozłączona sesja. Wprowadź zmienną zawierającą pssession lub polecenie, które tworzy lub pobiera psSession, na przykład Get-PSSession polecenie.

Type:PSSession
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-SessionOption

Określa opcje zaawansowane dla sesji. Wprowadź obiekt SessionOption, taki jak obiekt utworzony za pomocą New-PSSessionOption polecenia cmdlet lub tabela skrótów, w której klucze są nazwami opcji sesji, a wartości to wartości opcji sesji.

Wartości domyślne opcji są określane przez wartość zmiennej $PSSessionOption preferencji, jeśli została ustawiona. W przeciwnym razie wartości domyślne są ustanawiane przez opcje ustawione w konfiguracji sesji.

Wartości opcji sesji mają pierwszeństwo przed wartościami domyślnymi dla sesji ustawionych w zmiennej $PSSessionOption preferencji i w konfiguracji sesji. Nie mają jednak pierwszeństwa przed maksymalnymi wartościami, limitami przydziału ani limitami ustawionymi w konfiguracji sesji.

Aby uzyskać opis opcji sesji, które zawierają wartości domyślne, zobacz New-PSSessionOption. Aby uzyskać informacje o zmiennej preferencji $PSSessionOption , zobacz about_Preference_Variables. Aby uzyskać więcej informacji na temat konfiguracji sesji, zobacz Informacje o konfiguracjach sesji.

Type:PSSessionOption
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-UseSSL

Wskazuje, że to polecenie cmdlet używa protokołu Secure Sockets Layer (SSL) do nawiązania połączenia z rozłączną sesją. Domyślnie protokół SSL nie jest używany.

Usługa WS-Management szyfruje całą zawartość programu PowerShell przesyłaną przez sieć. UseSSL to dodatkowa ochrona, która wysyła dane za pośrednictwem połączenia HTTPS zamiast połączenia HTTP.

Jeśli używasz tego parametru i protokół SSL nie jest dostępny na porcie używanym dla polecenia, polecenie zakończy się niepowodzeniem.

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-WhatIf

Pokazuje, co się stanie po uruchomieniu polecenia cmdlet. Polecenie cmdlet nie jest uruchamiane.

Type:SwitchParameter
Aliases:wi
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

Dane wejściowe

PSSession

Do tego polecenia cmdlet można potokować obiekty sesji, takie jak obiekty zwracane przez Get-PSSession polecenie cmdlet.

Int32

Identyfikatory sesji można potokować do tego polecenia cmdlet.

Guid

Identyfikatory wystąpień tego polecenia cmdlet można przekazać potokowi.

String

Nazwy sesji można potokować do tego polecenia cmdlet.

Dane wyjściowe

Job

Jeśli wartość lub wartość domyślna parametru OutTarget to Job, Receive-PSSession zwraca obiekt zadania.

PSObject

To polecenie cmdlet zwraca wyniki poleceń uruchomionych w rozłączonej sesji, jeśli istnieje.

Uwagi

Program Windows PowerShell zawiera następujące aliasy dla programu Receive-PSSession:

  • rcsn

Receive-PSSession pobiera wyniki tylko z sesji, które zostały rozłączone. Tylko sesje połączone lub zakończone na komputerach z programem PowerShell 3.0 lub nowszym można odłączyć i ponownie nawiązać połączenie.

Jeśli polecenia uruchomione w rozłączonej sesji nie wygenerowały wyników lub jeśli wyniki zostały już zwrócone do innej sesji, Receive-PSSession nie generuje żadnych danych wyjściowych.

Tryb buforowania danych wyjściowych sesji określa, jak polecenia w sesji zarządzają danymi wyjściowymi po rozłączeniu sesji. Gdy wartość opcji OutputBufferingMode sesji to Drop i bufor wyjściowy jest pełny, polecenie rozpoczyna usuwanie danych wyjściowych. Receive-PSSession Nie można odzyskać tych danych wyjściowych. Aby uzyskać więcej informacji na temat opcji trybu buforowania danych wyjściowych, zobacz artykuły pomocy dotyczące poleceń cmdlet New-PSSessionOption i New-PSTransportOption .

Nie można zmienić wartości limitu czasu bezczynności sesji PSSession podczas nawiązywania połączenia z programem PSSession lub odbierania wyników. Parametr SessionOption parametru Receive-PSSession przyjmuje obiekt SessionOption , który ma wartość IdleTimeout . Jednak wartość IdleTimeout obiektu SessionOption i wartość $PSSessionOption IdleTimeout zmiennej są ignorowane podczas nawiązywania połączenia z psSession lub odbierania wyników.

  • Możesz ustawić i zmienić limit czasu bezczynności sesji PSSession podczas tworzenia psSession, przy użyciu New-PSSession poleceń cmdlet lub Invoke-Command i po rozłączeniu z psSession.
  • Właściwość IdleTimeout sesji PSSession ma kluczowe znaczenie dla rozłączonych sesji, ponieważ określa, jak długo sesja rozłączona jest utrzymywana na komputerze zdalnym. Odłączone sesje są uważane za bezczynne od momentu ich rozłączenia, nawet jeśli polecenia są uruchomione w sesji rozłączonej.

Jeśli uruchomisz zadanie podrzędne w sesji zdalnej przy użyciu parametru Invoke-Command AsJob polecenia cmdlet, obiekt zadania zostanie utworzony w bieżącej sesji, mimo że zadanie jest uruchamiane w sesji zdalnej. Jeśli rozłączysz sesję zdalną, obiekt zadania w bieżącej sesji zostanie odłączony od zadania. Obiekt zadania zawiera wszystkie zwrócone do niego wyniki, ale nie otrzymuje nowych wyników z zadania w sesji rozłączonej.

Jeśli inny klient łączy się z sesją zawierającą uruchomione zadanie, wyniki dostarczone do oryginalnego obiektu zadania w oryginalnej sesji nie są dostępne w nowo połączonej sesji. Tylko wyniki, które nie zostały dostarczone do oryginalnego obiektu zadania, są dostępne w ponownie połączonej sesji.

Podobnie, jeśli uruchomisz skrypt w sesji, a następnie odłączysz się od sesji, wszystkie wyniki, które skrypt dostarcza do sesji przed odłączeniem, nie są dostępne dla innego klienta, który nawiązuje połączenie z sesją.

Aby zapobiec utracie danych w sesjach, które mają być rozłączone, użyj parametru InDisconnectedSession polecenia Invoke-Command cmdlet. Ponieważ ten parametr uniemożliwia zwracanie wyników do bieżącej sesji, wszystkie wyniki są dostępne po ponownym połączeniu sesji.

Możesz również zapobiec utracie danych przy użyciu Invoke-Command polecenia cmdlet , aby uruchomić Start-Job polecenie w sesji zdalnej. W takim przypadku obiekt zadania jest tworzony w sesji zdalnej. Nie można użyć Receive-PSSession polecenia cmdlet , aby uzyskać wyniki zadania. Zamiast tego użyj Connect-PSSession polecenia cmdlet , aby nawiązać połączenie z sesją, a następnie użyć Invoke-Command polecenia cmdlet, aby uruchomić Receive-Job polecenie w sesji.

Gdy sesja zawierająca uruchomione zadanie zostanie rozłączona, a następnie ponownie nawiązana połączenie, oryginalny obiekt zadania zostanie ponownie użyty tylko wtedy, gdy zadanie zostanie rozłączone i ponownie nawiązane połączenie z tą samą sesją, a polecenie do ponownego nawiązania połączenia nie określa nowej nazwy zadania. Jeśli sesja zostanie ponownie połączona z inną sesją klienta lub zostanie określona nowa nazwa zadania, program PowerShell utworzy nowy obiekt zadania dla nowej sesji.

Po rozłączeniu sesji pssession stan sesji jest rozłączony, a 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żesz nawiązać połączenie z sesją, czy ponownie nawiązać połączenie, użyj właściwości Availability .
  • Wartość Availability (Brak) 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ą.
  • Aby uzyskać więcej informacji na temat wartości właściwości State sesji, zobacz RunspaceState.
  • Aby uzyskać więcej informacji na temat wartości właściwości Availability sesji, zobacz RunspaceAvailability.