Udostępnij za pośrednictwem


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]
       -InstanceId <Guid>
       [-OutTarget <OutTarget>]
       [-JobName <String>]
       [-Credential <PSCredential>]
       [-Authentication <AuthenticationMechanism>]
       [-CertificateThumbprint <String>]
       [-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
       -InstanceId <Guid>
       [-OutTarget <OutTarget>]
       [-JobName <String>]
       [-WhatIf]
       [-Confirm]
       [<CommonParameters>]
Receive-PSSession
       -Name <String>
       [-OutTarget <OutTarget>]
       [-JobName <String>]
       [-WhatIf]
       [-Confirm]
       [<CommonParameters>]

Opis

Polecenie cmdlet Receive-PSSession pobiera wyniki poleceń uruchomionych w sesjach programu Windows PowerShell (pssession), które zostały rozłączone. Jeśli sesja jest obecnie połączona, Receive-PSSession pobiera wyniki poleceń, które były uruchomione 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.

Oprócz polecenia Connect-PSSession lub zamiast polecenia Connect-PSSession można użyć Receive-PSSession. receive-PSSession może nawiązać połączenie z dowolną rozłączną lub ponownie połączoną sesją. Należą do nich te, które zostały uruchomione w innych sesjach lub na innych komputerach.

receive-PSSession działa na PSSessions, które zostały rozłączone celowo, na przykład przy użyciu polecenia cmdlet Disconnect-PSSession lub InDisconnectedSession parametru polecenia cmdlet Invoke-Command lub przypadkowo, na przykład przez przerwy w sieci.

Jeśli używasz polecenia cmdlet Receive-PSSession, aby nawiązać połączenie 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.

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

Przykłady

Przykład 1. Nawiązywanie połączenia z programem PSSession

PS C:\> Receive-PSSession -ComputerName Server01 -Name ITTask

To polecenie używa polecenia cmdlet Receive-PSSession, aby nawiązać połączenie z sesją ITTask na komputerze Server01 i uzyskać wyniki poleceń uruchomionych w sesji.

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

PS C:\> Get-PSSession -ComputerName Server01, Server02 | Receive-PSSession

To polecenie pobiera wyniki wszystkich poleceń uruchomionych we wszystkich rozłączonych sesjach na komputerach Server01 i Server02.

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

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

PS C:\> Receive-PSSession -ComputerName Server01 -Name ITTask -OutTarget Job -JobName ITTaskJob01 -Credential Domain01\Admin01
Id     Name            State         HasMoreData     Location
--     ----            -----         -----------     --------
16     ITTaskJob01     Running       True            Server01

To polecenie używa polecenia cmdlet Receive-PSSession, aby uzyskać wyniki skryptu uruchomionego w sesji ITTask na komputerze Server01.

Polecenie używa parametrów ComputerName i Name w celu zidentyfikowania rozłączonej sesji. Używa parametru OutTarget z wartością Job w celu kierowania Receive-PSSession, aby zwrócić wyniki jako zadanie, a parametr JobName określić nazwę zadania w ponownie połączonej sesji.

Polecenie używa parametru Credential do uruchomienia polecenia Receive-PSSession przy użyciu uprawnień administratora domeny.

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

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

The first command uses the New-PSSession cmdlet to create a session on the Server01 computer. The command saves the session in the $s variable.The second command gets the session in the $s variable. Notice that the **State** is Opened and the **Availability** is Available. These values indicate that you are connected to the session and can run commands in the session.
PS C:\> $s = New-PSSession -ComputerName Server01 -Name AD -ConfigurationName ADEndpoint
PS C:\> $s

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

The third command uses the Invoke-Command cmdlet to run a script in the session in the $s variable.The script begins to run and return data, but a network outage occurs that interrupts the session. The user has to exit the session and restart the local computer.
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

When the computer restarts, the user starts Windows PowerShell and runs a Get-PSSession command to get sessions on the Server01 computer. The output shows that the AD session still exists on the Server01 computer. The **State** indicates that it is disconnected and the **Availability** value, None, indicates that it is not connected to any client sessions.
PS C:\> Get-PSSession -ComputerName Server01

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


The fifth command uses the **Receive-PSSession** cmdlet to reconnect to the AD session and get the results of the script that ran in the session. The command uses the *OutTarget* parameter to request the results in a job named ADJob.The command returns a job object. The output indicates that the script is still running.
PS C:\> Receive-PSSession -ComputerName Server01 -Name AD -OutTarget Job -JobName AD
Job Id     Name      State         HasMoreData     Location
--     ----      -----         -----------     --------
16     ADJob     Running       True            Server01

The sixth command uses the Get-PSSession cmdlet to check the job state. The output confirms that, in addition to resuming script execution and getting the script results, the **Receive-PSSession** cmdlet reconnected to the AD session, which is now open and available for commands.
PS C:\> Get-PSSession -ComputerName Server01
Id Name    ComputerName    State         ConfigurationName     Availability
-- ----    ------------    -----         -----------------     ------------
 1 Backup  Server01        Disconnected  Microsoft.PowerShell          Busy
 8 AD      Server01        Opened        ADEndpoint                Available

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

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

The first command uses the Invoke-Command cmdlet to run a script on the three remote computers. Because the scripts gathers and summarize data from multiple databases, it often takes the script an extended time to finish. The command uses the *InDisconnectedSession* parameter, which starts the scripts and then immediately disconnects the sessions.The command uses the *SessionOption* parameter to extend the **IdleTimeout** value of the disconnected session. Disconnected sessions are considered to be idle from the moment they are disconnected, so it is important to set the idle time-out for long enough that the commands can complete and you can reconnect to the session, if necessary. You can set the **IdleTimeout** only when you create the **PSSession** and change it only when you disconnect from it. You cannot change the **IdleTimeout** value when you connect to a **PSSession** or receiving its results.After running the command, the user exits Windows PowerShell and closes the computer .
PS C:\> Invoke-Command -InDisconnectedSession -ComputerName Server01, Server02, Server30 -FilePath \\Server12\Scripts\SharedScripts\Get-BugStatus.ps1 -Name BugStatus -SessionOption @{IdleTimeout = 86400000} -ConfigurationName ITTasks# Exit

# Start Windows PowerShell on a different computer.

On the next day, the user resumes Windows and starts Windows PowerShell. The second command uses the Get-PSSession cmdlet to get the sessions in which the scripts were running. The command identifies the sessions by the computer name, session name, and the name of the session configuration and saves the sessions in the $s variable.The third command displays the value of the $s variable. The output shows that the sessions are disconnected, but not busy, as expected.
PS C:\> $s = Get-PSSession -ComputerName Server01, Server02, Server30 -Name BugStatus
 PS C:\> $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


The fourth command uses the **Receive-PSSession** cmdlet to connect to the sessions in the $s variable and get their results. The command saves the results in the $Results variable.Another display of the $s variable shows that the sessions are connected and available for commands.
PS C:\> $Results = Receive-PSSession -Session $s
PS C:\> $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


The fifth command displays the script results in the $Results variable. If any of the results are unexpected, the user can run commands in the sessions to investigate.
PS C:\> $Results
Bug Report - Domain 01
----------------------
ComputerName          BugCount          LastUpdated
--------------        ---------         ------------
Server01              121               Friday, December 30, 2011 5:03:34 PM

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

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

The first command uses the New-PSSession cmdlet to create the Test session on the Server01 computer. The command saves the session in the $s variable.
PS C:\> $s = New-PSSession -ComputerName Server01 -Name Test

The second command uses the Invoke-Command cmdlet to run a command in the session in the $s variable. The command uses the *AsJob* parameter to run the command as a job and to create the job object in the current session. The command returns a job object, which is saved in the $j variable.The third command displays the job object in the $j variable.
PS C:\> $j = Invoke-Command -Session $s { 1..1500 | Foreach-Object {"Return $_"; sleep 30}} -AsJob

PS C:\> $j
Id     Name           State         HasMoreData     Location
--     ----           -----         -----------     --------
16     Job1           Running       True            Server01

The fourth command disconnects the session in the $s variable.
PS C:\> $s | Disconnect-PSSession
Id Name   ComputerName    State         ConfigurationName     Availability
-- ----   ------------    -----         -----------------     ------------
1  Test   Server01        Disconnected  Microsoft.PowerShell  None

The fifth command shows the effect of disconnecting on the job object in the $j variable. The job state is now Disconnected.
PS C:\> $j
Id     Name           State         HasMoreData     Location
--     ----           -----         -----------     --------
16     Job1           Disconnected  True            Server01

The sixth command runs a Receive-Job command on the job in the $j variable. The output shows that the job began to return output before the session and the job were disconnected.
PS C:\> Receive-Job $j -Keep
Return 1
Return 2

The seventh command is run in the same client session. The command uses the Connect-PSSession cmdlet to reconnect to the Test session on the Server01 computer and saves the session in the $s2 variable.
PS C:\> $s2 = Connect-PSSession -ComputerName Server01 -Name Test

The eighth command uses the **Receive-PSSession** cmdlet to get the results of the job that was running in the session. Because the command is run in the same session, **Receive-PSSession** returns the results as a job by default and reuses the same job object. The command saves the job in the $j2 variable.The ninth command uses the **Receive-Job** cmdlet to get the results of the job in the $j variable.
PS C:\> $j2 = Receive-PSSession -ComputerName Server01 -Name Test

PS C:\> Receive-Job $j
Return 3
Return 4

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

Parametry

-AllowRedirection

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

W przypadku używania parametru identyfikatora ConnectionURI obiekt docelowy zdalny może zwrócić instrukcję, aby przekierować do innego identyfikatora URI. Domyślnie program Windows 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 MaximumConnectionRedirectionCount sesji. Użyj parametru MaximumRedirection polecenia cmdlet New-PSSessionOption lub ustaw właściwość MaximumConnectionRedirectionCount zmiennej preferencji $PSSessionOption. Wartość domyślna to 5.

Typ:SwitchParameter
Position:Named
Domyślna wartość:None
Wymagane:False
Akceptowanie danych wejściowych potoku:False
Akceptowanie symboli wieloznacznych: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 nazwa aplikacji to WSMan: https://localhost:5985/WSMAN. Nazwa aplikacji sesji jest przechowywana we właściwości Runspace.ConnectionInfo.AppName sesji.

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

Typ:String
Position:Named
Domyślna wartość:None
Wymagane:False
Akceptowanie danych wejściowych potoku:True
Akceptowanie symboli wieloznacznych: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:

  • Domyślny
  • Podstawowy
  • Credssp
  • Trawić
  • Kerberos
  • Negocjować
  • NegotiateWithImplicitCredential

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

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

Ostrożność

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.

Typ:AuthenticationMechanism
Dopuszczalne wartości:Default, Basic, Negotiate, NegotiateWithImplicitCredential, Credssp, Digest, Kerberos
Position:Named
Domyślna wartość:None
Wymagane:False
Akceptowanie danych wejściowych potoku:False
Akceptowanie symboli wieloznacznych: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. Można je mapować tylko na konta użytkowników lokalnych. Nie działają z kontami domeny.

Aby uzyskać odcisk palca certyfikatu, użyj polecenia Get-Item lub Get-ChildItem w dysku Certyfikat programu Windows PowerShell.

Typ:String
Position:Named
Domyślna wartość:None
Wymagane:False
Akceptowanie danych wejściowych potoku:False
Akceptowanie symboli wieloznacznych: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 jednego komputera. Symbole wieloznaczne nie są dozwolone. Aby określić komputer lokalny, wpisz nazwę komputera, localhost lub kropkę (.)

Typ:String
Aliasy:Cn
Position:0
Domyślna wartość:None
Wymagane:True
Akceptowanie danych wejściowych potoku:True
Akceptowanie symboli wieloznacznych:False

-ConfigurationName

Łą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 poprzedzany: https://schemas.microsoft.com/powershell. Nazwa konfiguracji sesji jest przechowywana we właściwości ConfigurationName sesji.

Wartość tego 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 about_Session_Configurations.

Typ:String
Position:Named
Domyślna wartość:None
Wymagane:False
Akceptowanie danych wejściowych potoku:True
Akceptowanie symboli wieloznacznych:False

-Confirm

Monituje o potwierdzenie przed uruchomieniem polecenia cmdlet.

Typ:SwitchParameter
Aliasy:cf
Position:Named
Domyślna wartość:False
Wymagane:False
Akceptowanie danych wejściowych potoku:False
Akceptowanie symboli wieloznacznych: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 tego ciągu jest następujący:

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

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

https://localhost:5985/WSMAN

Jeśli nie określisz identyfikatora URI połączenia, możesz użyć parametrów UseSSL, ComputerName, Porti parametrów 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 z portami standardów: 80 dla protokołu HTTP i 443 dla protokołu HTTPS. Aby użyć domyślnych portów komunikacji zdalnej programu Windows 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 Windows PowerShell uniemożliwia przekierowanie, chyba że użyjesz parametru AllowRedirection w poleceniu .

Typ:Uri
Aliasy:URI, CU
Position:0
Domyślna wartość:https://localhost:5985/WSMAN
Wymagane:True
Akceptowanie danych wejściowych potoku:True
Akceptowanie symboli wieloznacznych:False

-Credential

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

Wpisz nazwę użytkownika, taką jak User01 lub Domain01\User01. Możesz też wprowadzić obiekt PSCredential, taki jak obiekt wygenerowany przez polecenie cmdlet Get-Credential. Jeśli wpiszesz nazwę użytkownika, to polecenie cmdlet wyświetli monit o podanie hasła.

Typ:PSCredential
Position:Named
Domyślna wartość:None
Wymagane:False
Akceptowanie danych wejściowych potoku:False
Akceptowanie symboli wieloznacznych: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ą.

Typ:Int32
Position:0
Domyślna wartość:None
Wymagane:True
Akceptowanie danych wejściowych potoku:True
Akceptowanie symboli wieloznacznych: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 InstanceIDPSSession.

Typ:Guid
Position:Named
Domyślna wartość:None
Wymagane:True
Akceptowanie danych wejściowych potoku:False
Akceptowanie symboli wieloznacznych:False

-JobName

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

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 Windows 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 Windows 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 efektu.

Typ:String
Position:Named
Domyślna wartość:None
Wymagane:False
Akceptowanie danych wejściowych potoku:False
Akceptowanie symboli wieloznacznych:False

-Name

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

Typ:String
Position:Named
Domyślna wartość:None
Wymagane:True
Akceptowanie danych wejściowych potoku:False
Akceptowanie symboli wieloznacznych: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.
  • Gospodarz. 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 jednak polecenie odbierane w rozłączonej sesji zostało uruchomione w bieżącej sesji, domyślną wartością parametru OutTarget jest formularz, w którym uruchomiono polecenie. Jeśli polecenie zostało uruchomione jako zadanie, jest ono domyślnie zwracane jako zadanie. W przeciwnym razie jest 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ć.

Typ:OutTarget
Dopuszczalne wartości:Default, Host, Job
Position:Named
Domyślna wartość:None
Wymagane:False
Akceptowanie danych wejściowych potoku:False
Akceptowanie symboli wieloznacznych:False

-Port

Określa port sieciowy na komputerze zdalnym używanym do ponownego nawiązywania połączenia z sesją. Aby nawiązać połączenie z komputerem zdalnym, komputer zdalny musi 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 Windows 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ów , chyba że musisz. 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.

Typ:Int32
Position:Named
Domyślna wartość:None
Wymagane:False
Akceptowanie danych wejściowych potoku:False
Akceptowanie symboli wieloznacznych:False

-Session

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

Typ:PSSession
Position:0
Domyślna wartość:None
Wymagane:True
Akceptowanie danych wejściowych potoku:True
Akceptowanie symboli wieloznacznych:False

-SessionOption

Określa opcje zaawansowane dla sesji. Wprowadź obiekt SessionOption, taki jak obiekt utworzony przy użyciu polecenia cmdlet New-PSSessionOption lub tabela skrótu, w której klucze są nazwami opcji sesji, a wartości są wartościami opcji sesji.

Wartości domyślne opcji są określane przez wartość zmiennej preferencji $PSSessionOption, 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 sesji ustawionymi w zmiennej preferencji $PSSessionOption i w konfiguracji sesji. Nie mają jednak pierwszeństwa przed maksymalnymi wartościami, limitami przydziału lub 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 about_Session_Configurations.

Typ:PSSessionOption
Position:Named
Domyślna wartość:None
Wymagane:False
Akceptowanie danych wejściowych potoku:False
Akceptowanie symboli wieloznacznych: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.

WS-Management szyfruje całą zawartość programu Windows 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, ale protokół SSL nie jest dostępny na porcie używanym dla polecenia, polecenie zakończy się niepowodzeniem.

Typ:SwitchParameter
Position:Named
Domyślna wartość:None
Wymagane:False
Akceptowanie danych wejściowych potoku:False
Akceptowanie symboli wieloznacznych:False

-WhatIf

Pokazuje, co się stanie, jeśli polecenie cmdlet zostanie uruchomione. Polecenie cmdlet nie jest uruchamiane.

Typ:SwitchParameter
Aliasy:wi
Position:Named
Domyślna wartość:False
Wymagane:False
Akceptowanie danych wejściowych potoku:False
Akceptowanie symboli wieloznacznych:False

Dane wejściowe

PSSession

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

Int32

Do tego polecenia cmdlet można przekazać identyfikatory sesji.

Guid

Można potokować identyfikatory wystąpień sesji tego polecenia cmdlet.

String

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

Dane wyjściowe

System.Management.Automation.Job or PSObject

To polecenie cmdlet zwraca wyniki poleceń uruchomionych w rozłączonej sesji, jeśli istnieje. Jeśli wartość lub wartość domyślna parametru OutTarget to Job, Receive-PSSession zwraca obiekt zadania. W przeciwnym razie zwraca obiekty reprezentujące wyniki tego polecenia.

Uwagi

  • receive-PSSession pobiera wyniki tylko z sesji, które zostały rozłączone. Tylko sesje połączone lub zakończone na komputerach z programem Windows 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ść OutputBufferingMode opcji sesji to Drop, a bufor wyjściowy jest pełny, polecenie rozpoczyna usuwanie danych wyjściowych. receive-PSSession nie może odzyskać tych danych wyjściowych. Aby uzyskać więcej informacji na temat opcji trybu buforowania danych wyjściowych, zobacz tematy pomocy dotyczące poleceń cmdlet New-PSSessionOption i New-PSTransportOption.

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

    Możesz ustawić i zmienić limit czasu bezczynności PSSession podczas tworzenia PSSession, przy użyciu polecenia cmdlet New-PSSession lub Invoke-Command, a po rozłączeniu się z psSession.

    Właściwość IdleTimeout pssession ma kluczowe znaczenie dla rozłączonych sesji, ponieważ określa, jak długo jest utrzymywana rozłączona sesja 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 AsJob polecenia cmdlet Invoke-Command, 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 nadal zawiera wszystkie zwrócone do niego wyniki, ale nie otrzymuje nowych wyników z zadania w sesji rozłączonej.

    Jeśli inny klient nawiązuje połączenie 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 cmdlet Invoke-Command. 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 za pomocą polecenia cmdlet invoke-command do uruchomienia polecenia Start-Job w sesji zdalnej. W takim przypadku obiekt zadania jest tworzony w sesji zdalnej. Nie można użyć polecenia cmdlet Receive-PSSession, aby uzyskać wyniki zadania. Zamiast tego użyj polecenia cmdlet Connect-PSSession, aby nawiązać połączenie z sesją, a następnie użyj polecenia cmdlet Invoke-Command, aby uruchomić polecenie Receive-Job 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 połączone 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 Windows PowerShell utworzy nowy obiekt zadania dla nowej sesji.

  • Po rozłączeniu 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. W związku z tym wartość Disconnected oznacza, że PSSession nie jest połączona z bieżącą sesją. Nie oznacza to jednak, że PSSession jest odłączony od wszystkich sesji. Może być połączony z inną sesją. Aby określić, czy można nawiązać połączenie z sesją, czy ponownie nawiązać połączenie, użyj właściwości Availability.

    Wartość Dostępność None wskazuje, że można nawiązać połączenie z sesją. Wartość Busy wskazuje, że nie można nawiązać połączenia z PSSession, ponieważ jest połączony z inną sesją.

    Aby uzyskać więcej informacji na temat wartości właściwości State sesji, zobacz RunspaceState Enumeration w bibliotece MSDN.

    Aby uzyskać więcej informacji na temat wartości właściwości dostępności sesji, zobacz RunspaceAvailability Enumeration.