Receive-PSSession
Pobiera wyniki poleceń w sesjach odłączonych
Składnia
Session (Domyślna)
Receive-PSSession
[-Session] <PSSession>
[-OutTarget <OutTarget>]
[-JobName <String>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Id
Receive-PSSession
[-Id] <Int32>
[-OutTarget <OutTarget>]
[-JobName <String>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
ComputerSessionName
Receive-PSSession
[-ComputerName] <String>
-Name <String>
[-ApplicationName <String>]
[-ConfigurationName <String>]
[-OutTarget <OutTarget>]
[-JobName <String>]
[-Credential <PSCredential>]
[-Authentication <AuthenticationMechanism>]
[-CertificateThumbprint <String>]
[-Port <Int32>]
[-UseSSL]
[-SessionOption <PSSessionOption>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
ComputerInstanceId
Receive-PSSession
[-ComputerName] <String>
-InstanceId <Guid>
[-ApplicationName <String>]
[-ConfigurationName <String>]
[-OutTarget <OutTarget>]
[-JobName <String>]
[-Credential <PSCredential>]
[-Authentication <AuthenticationMechanism>]
[-CertificateThumbprint <String>]
[-Port <Int32>]
[-UseSSL]
[-SessionOption <PSSessionOption>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
ConnectionUriSessionName
Receive-PSSession
[-ConnectionUri] <Uri>
-Name <String>
[-ConfigurationName <String>]
[-AllowRedirection]
[-OutTarget <OutTarget>]
[-JobName <String>]
[-Credential <PSCredential>]
[-Authentication <AuthenticationMechanism>]
[-CertificateThumbprint <String>]
[-SessionOption <PSSessionOption>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
ConnectionUriInstanceId
Receive-PSSession
[-ConnectionUri] <Uri>
-InstanceId <Guid>
[-ConfigurationName <String>]
[-AllowRedirection]
[-OutTarget <OutTarget>]
[-JobName <String>]
[-Credential <PSCredential>]
[-Authentication <AuthenticationMechanism>]
[-CertificateThumbprint <String>]
[-SessionOption <PSSessionOption>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
InstanceId
Receive-PSSession
-InstanceId <Guid>
[-OutTarget <OutTarget>]
[-JobName <String>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
SessionName
Receive-PSSession
-Name <String>
[-OutTarget <OutTarget>]
[-JobName <String>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Opis
Ten cmdlet jest dostępny tylko na platformie Windows.
Polecenie cmdlet Receive-PSSession pobiera wyniki poleceń uruchomionych w sesjach 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.
Ten cmdlet został wprowadzony w programie PowerShell 3.0.
Można użyć Receive-PSSession oprócz polecenia Connect-PSSession lub zamiast niego.
Receive-PSSession może nawiązać połączenie z dowolną rozłączną lub ponownie połączoną sesją, 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 polecenia cmdlet Disconnect-PSSession lub Invoke-CommandInDisconnectedSession parametru. Lub rozłączone przypadkowo przez przerwę w sieci.
Jeśli używasz polecenia cmdlet Receive-PSSession do nawiązania 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łączonych sesji, zobacz about_Remote_Disconnected_Sessions.
Niektóre przykłady używają techniki splatting, aby zmniejszyć długość wiersza i poprawić czytelność. Aby uzyskać więcej informacji, zobacz about_Splatting.
Przykłady
Przykład 1. Nawiązywanie połączenia z programem 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
Receive-PSSession określa komputer zdalny z parametrem ComputerName. Parametr Nazwa 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 wykonuje poleceń, Receive-PSSession nie łączy się z sesją i nie zwraca żadnych wyników ani błędów.
Get-PSSession -ComputerName Server01, Server02 | Receive-PSSession
Get-PSSession używa parametru ComputerName w celu określenia komputerów zdalnych. Obiekty są wysyłane w dół rurki do Receive-PSSession.
Przykład 3. Pobieranie wyników skryptu uruchomionego w sesji
W tym przykładzie użyto polecenia cmdlet Receive-PSSession, 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 w celu zidentyfikowania rozłączonej sesji.
Używa parametru OutTarget z wartością Job, aby skierować Receive-PSSession do zwrócenia wyników jako zadanie. Parametr JobName określa nazwę zadania w ponownie połączonej sesji.
Parametr Credential uruchamia polecenie 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
W tym przykładzie użyto polecenia cmdlet Receive-PSSession, aby uzyskać wyniki zadania po zakłóceniu sesji wskutek przerwy w sieci. 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 cmdlet New-PSSession tworzy sesję na komputerze Server01 i zapisuje sesję w zmiennej $s. Zmienna $s wyświetla, że stan jest otwarty, a dostępność jest dostępna. Te wartości wskazują, że masz połączenie z sesją i możesz uruchamiać polecenia w sesji.
Polecenie cmdlet Invoke-Command uruchamia skrypt w sesji 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 polecenie Get-PSSession, aby pobrać sesje na komputerze Server01. Dane wyjściowe pokazują, że sesja ad nadal istnieje na komputerze Server01.
stan wskazuje, że sesja AD jest rozłączona. Wartość Availability None wskazuje, że sesja nie jest połączona z żadną sesją klienta.
Polecenie cmdlet Receive-PSSession ponownie nawiązuje połączenie z sesją AD i pobiera wyniki skryptu, który został uruchomiony w tej sesji. Polecenie używa parametru OutTarget, aby zażądać wyników zadania o nazwie ADJob. Polecenie zwraca obiekt zadania, a dane wyjściowe wskazują, że skrypt jest nadal uruchomiony.
Polecenie cmdlet Get-PSSession służy do sprawdzania stanu zadania. Dane wyjściowe potwierdzają, że polecenie cmdlet Receive-PSSession 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 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.
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 cmdlet Invoke-Command 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ć IdleTimeout tylko wtedy, gdy utworzysz PSSession i zmienić go tylko wtedy, gdy się od niego odłączysz. Nie można zmienić wartości IdleTimeout, gdy połączysz się z PSSession lub podczas odbierania jego 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, aby pobrać sesje, 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 cmdlet Receive-PSSession łączy się z sesjami zapisanymi w zmiennej $s i pobiera ich wyniki.
Polecenie zapisuje wyniki w zmiennej $Results. Zostanie wyświetlona zmienna $s, która pokazuje, że sesje są połączone i dostępne dla poleceń.
Wyniki skryptu w zmiennej $Results zostają wyświetlone 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 cmdlet New-PSSession tworzy sesję testowa na komputerze Server01. Polecenie zapisuje sesję w zmiennej $s.
Polecenie cmdlet Invoke-Command 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 przesyłany przez potok do Disconnect-PSSession, po czym sesja jest rozłączana.
Wyświetlana jest zmienna $j i pokazuje efekt rozłączenia obiektu zadania w zmiennej $j. Stan zadania jest teraz rozłączony.
Receive-Job jest uruchamiany w ramach zadania związanego z zmienną $j. Dane wyjściowe pokazują, że zadanie zaczęło zwracać dane wyjściowe zanim sesja i zadanie zostały rozłączone.
Polecenie cmdlet Connect-PSSession jest uruchamiane w tej samej sesji klienta. Polecenie ponownie łączy się z sesją testową na komputerze Server01 i zapisuje sesję w zmiennej $s2.
Polecenie cmdlet Receive-PSSession pobiera wyniki zadania, które było uruchomione 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 cmdlet Receive-Job uzyskuje wyniki zadania i zapisuje je w zmiennej $j.
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 ConnectionURI zdalny obiekt docelowy może poinformować o przekierowaniu 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 sesji MaximumConnectionRedirectionCount. Użyj parametru MaximumRedirection polecenia cmdlet New-PSSessionOption lub ustaw właściwość MaximumConnectionRedirectionCount zmiennej preferencji $PSSessionOption. Wartość domyślna to 5.
Właściwości parametru
| Typ: | SwitchParameter |
| Domyślna wartość: | False |
| Obsługuje symbole wieloznaczne: | False |
| DontShow: | False |
Zestawy parametrów
ConnectionUriSessionName
| Position: | Named |
| Obowiązkowy: | False |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
ConnectionUriInstanceId
| Position: | Named |
| Obowiązkowy: | False |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | 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 URI połączenia, WSMan jest nazwą aplikacji: http://localhost:5985/WSMAN.
Nazwa aplikacji sesji jest przechowywana we właściwości Runspace.ConnectionInfo.AppName sesji.
Wartość parametru służy do wybierania i filtrowania sesji. Nie zmienia aplikacji używanej przez sesję.
Właściwości parametru
| Typ: | String |
| Domyślna wartość: | None |
| Obsługuje symbole wieloznaczne: | False |
| DontShow: | False |
Zestawy parametrów
ComputerInstanceId
| Position: | Named |
| Obowiązkowy: | False |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | True |
| Wartość z pozostałych argumentów: | False |
ComputerSessionName
| Position: | Named |
| Obowiązkowy: | False |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | True |
| Wartość z pozostałych argumentów: | 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
- Basic
- Credssp
- Podsumowanie
- Kerberos
- Negocjacja
- Nawiąż połączenie przy użyciu poświadczenia domyślnego
Wartość domyślna to Default.
Aby uzyskać więcej informacji na temat wartości tego parametru, zobacz Wyliczenia Mechanizmów Uwierzytelniania.
Ostrzeżenie
Uwierzytelnianie przez dostawcę obsługi zabezpieczeń poświadczeń (CredSSP), w którym poświadczenia użytkownika są przekazywane do zdalnego komputera w celu ich uwierzytelnienia, jest przeznaczone dla poleceń wymagających uwierzytelniania w więcej niż jednym zasobie, takich jak dostęp 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.
Właściwości parametru
| Typ: | AuthenticationMechanism |
| Domyślna wartość: | Default |
| Dopuszczalne wartości: | Default, Basic, Negotiate, NegotiateWithImplicitCredential, Credssp, Digest, Kerberos |
| Obsługuje symbole wieloznaczne: | False |
| DontShow: | False |
Zestawy parametrów
ComputerInstanceId
| Position: | Named |
| Obowiązkowy: | False |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
ComputerSessionName
| Position: | Named |
| Obowiązkowy: | False |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
ConnectionUriSessionName
| Position: | Named |
| Obowiązkowy: | False |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
ConnectionUriInstanceId
| Position: | Named |
| Obowiązkowy: | False |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
-CertificateThumbprint
Określa cyfrowy certyfikat klucza publicznego (X509) konta użytkownika, które ma uprawnienia do połączenia z rozłączoną sesją. 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 polecenia Get-Item lub Get-ChildItem na dysku Cert: programu PowerShell.
Właściwości parametru
| Typ: | String |
| Domyślna wartość: | None |
| Obsługuje symbole wieloznaczne: | False |
| DontShow: | False |
Zestawy parametrów
ComputerInstanceId
| Position: | Named |
| Obowiązkowy: | False |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
ComputerSessionName
| Position: | Named |
| Obowiązkowy: | False |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
ConnectionUriSessionName
| Position: | Named |
| Obowiązkowy: | False |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
ConnectionUriInstanceId
| Position: | Named |
| Obowiązkowy: | False |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | 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 po stronie odbierającej połączenie. 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.
Właściwości parametru
| Typ: | String |
| Domyślna wartość: | None |
| Obsługuje symbole wieloznaczne: | False |
| DontShow: | False |
| Aliasy: | Cn |
Zestawy parametrów
ComputerInstanceId
| Position: | 0 |
| Obowiązkowy: | True |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | True |
| Wartość z pozostałych argumentów: | False |
ComputerSessionName
| Position: | 0 |
| Obowiązkowy: | True |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | True |
| Wartość z pozostałych argumentów: | 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, którą sesja wykorzystuje.
Aby uzyskać więcej informacji na temat konfiguracji sesji, zobacz about_Session_Configurations.
Właściwości parametru
| Typ: | String |
| Domyślna wartość: | None |
| Obsługuje symbole wieloznaczne: | False |
| DontShow: | False |
Zestawy parametrów
ComputerInstanceId
| Position: | Named |
| Obowiązkowy: | False |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | True |
| Wartość z pozostałych argumentów: | False |
ComputerSessionName
| Position: | Named |
| Obowiązkowy: | False |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | True |
| Wartość z pozostałych argumentów: | False |
ConnectionUriSessionName
| Position: | Named |
| Obowiązkowy: | False |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | True |
| Wartość z pozostałych argumentów: | False |
ConnectionUriInstanceId
| Position: | Named |
| Obowiązkowy: | False |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | True |
| Wartość z pozostałych argumentów: | False |
-Confirm
Prosi o potwierdzenie przed uruchomieniem cmdletu.
Właściwości parametru
| Typ: | SwitchParameter |
| Domyślna wartość: | False |
| Obsługuje symbole wieloznaczne: | False |
| DontShow: | False |
| Aliasy: | por |
Zestawy parametrów
(All)
| Position: | Named |
| Obowiązkowy: | False |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | 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, 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 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, PowerShell blokuje przekierowanie, chyba że użyjesz parametru AllowRedirection w poleceniu.
Właściwości parametru
| Typ: | Uri |
| Domyślna wartość: | http://localhost:5985/WSMAN |
| Obsługuje symbole wieloznaczne: | False |
| DontShow: | False |
| Aliasy: | URI, jednostka pojemności |
Zestawy parametrów
ConnectionUriSessionName
| Position: | 0 |
| Obowiązkowy: | True |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | True |
| Wartość z pozostałych argumentów: | False |
ConnectionUriInstanceId
| Position: | 0 |
| Obowiązkowy: | True |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | True |
| Wartość z pozostałych argumentów: | 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, lub wprowadź obiekt PSCredential wygenerowany przez polecenie cmdlet Get-Credential. 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 / Notatka
Aby uzyskać więcej informacji na temat ochrony danych SecureString, zobacz Jak bezpieczny jest protokół SecureString?.
Właściwości parametru
| Typ: | PSCredential |
| Domyślna wartość: | Current user |
| Obsługuje symbole wieloznaczne: | False |
| DontShow: | False |
Zestawy parametrów
ComputerInstanceId
| Position: | Named |
| Obowiązkowy: | False |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
ComputerSessionName
| Position: | Named |
| Obowiązkowy: | False |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
ConnectionUriSessionName
| Position: | Named |
| Obowiązkowy: | False |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
ConnectionUriInstanceId
| Position: | Named |
| Obowiązkowy: | False |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | 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ą.
Właściwości parametru
| Typ: | Int32 |
| Domyślna wartość: | None |
| Obsługuje symbole wieloznaczne: | False |
| DontShow: | False |
Zestawy parametrów
Id
| Position: | 0 |
| Obowiązkowy: | True |
| Wartość z potoku: | True |
| Wartość z potoku według nazwy właściwości: | True |
| Wartość z pozostałych argumentów: | 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.
Właściwości parametru
| Typ: | Guid |
| Domyślna wartość: | None |
| Obsługuje symbole wieloznaczne: | False |
| DontShow: | False |
Zestawy parametrów
ComputerInstanceId
| Position: | Named |
| Obowiązkowy: | True |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
ConnectionUriInstanceId
| Position: | Named |
| Obowiązkowy: | True |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
InstanceId
| Position: | Named |
| Obowiązkowy: | True |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
-JobName
Określa przyjazną nazwę dla zadania zwracanego przez Receive-PSSession.
Receive-PSSession zwraca zadanie, gdy wartość parametru OutTarget to Job lub gdy zadanie działające 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 domyślna wartość lub jawna wartość parametru OutTarget nie jest zadaniem, polecenie powiedzie się, ale parametr JobName nie ma efektu.
Właściwości parametru
| Typ: | String |
| Domyślna wartość: | None |
| Obsługuje symbole wieloznaczne: | False |
| DontShow: | False |
Zestawy parametrów
(All)
| Position: | Named |
| Obowiązkowy: | False |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
-Name
Określa przyjazną nazwę rozłączonej sesji.
Właściwości parametru
| Typ: | String |
| Domyślna wartość: | None |
| Obsługuje symbole wieloznaczne: | False |
| DontShow: | False |
Zestawy parametrów
ComputerSessionName
| Position: | Named |
| Obowiązkowy: | True |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
ConnectionUriSessionName
| Position: | Named |
| Obowiązkowy: | True |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
SessionName
| Position: | Named |
| Obowiązkowy: | True |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | 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, domyślną wartością 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ć.
Właściwości parametru
| Typ: | OutTarget |
| Domyślna wartość: | None |
| Dopuszczalne wartości: | Default, Host, Job |
| Obsługuje symbole wieloznaczne: | False |
| DontShow: | False |
Zestawy parametrów
(All)
| Position: | Named |
| Obowiązkowy: | False |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | 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.
Właściwości parametru
| Typ: | Int32 |
| Domyślna wartość: | None |
| Obsługuje symbole wieloznaczne: | False |
| DontShow: | False |
Zestawy parametrów
ComputerInstanceId
| Position: | Named |
| Obowiązkowy: | False |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
ComputerSessionName
| Position: | Named |
| Obowiązkowy: | False |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
-Session
Określa rozłączoną sesję. Wprowadź zmienną zawierającą PSSession lub polecenie, które tworzy lub pobiera PSSession, na przykład polecenie Get-PSSession.
Właściwości parametru
| Typ: | PSSession |
| Domyślna wartość: | None |
| Obsługuje symbole wieloznaczne: | False |
| DontShow: | False |
Zestawy parametrów
Session
| Position: | 0 |
| Obowiązkowy: | True |
| Wartość z potoku: | True |
| Wartość z potoku według nazwy właściwości: | True |
| Wartość z pozostałych argumentów: | 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 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 about_Session_Configurations.
Właściwości parametru
| Typ: | PSSessionOption |
| Domyślna wartość: | None |
| Obsługuje symbole wieloznaczne: | False |
| DontShow: | False |
Zestawy parametrów
ComputerInstanceId
| Position: | Named |
| Obowiązkowy: | False |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
ComputerSessionName
| Position: | Named |
| Obowiązkowy: | False |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
ConnectionUriSessionName
| Position: | Named |
| Obowiązkowy: | False |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
ConnectionUriInstanceId
| Position: | Named |
| Obowiązkowy: | False |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
-UseSSL
Wskazuje, że to polecenie cmdlet używa protokołu Secure Sockets Layer (SSL) do nawiązania połączenia z rozłączoną sesją. Domyślnie protokół SSL nie jest używany.
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.
Właściwości parametru
| Typ: | SwitchParameter |
| Domyślna wartość: | False |
| Obsługuje symbole wieloznaczne: | False |
| DontShow: | False |
Zestawy parametrów
ComputerInstanceId
| Position: | Named |
| Obowiązkowy: | False |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
ComputerSessionName
| Position: | Named |
| Obowiązkowy: | False |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
-WhatIf
Pokazuje, co się stanie, jeśli polecenie cmdlet zostanie uruchomione. Cmdlet nie został uruchomiony.
Właściwości parametru
| Typ: | SwitchParameter |
| Domyślna wartość: | False |
| Obsługuje symbole wieloznaczne: | False |
| DontShow: | False |
| Aliasy: | Wi |
Zestawy parametrów
(All)
| Position: | Named |
| Obowiązkowy: | False |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
CommonParameters
To polecenie cmdlet obsługuje typowe parametry: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction i -WarningVariable. Aby uzyskać więcej informacji, zobacz about_CommonParameters.
Dane wejściowe
PSSession
Do tego polecenia cmdlet można przekazywać obiekty sesji, takie jak obiekty zwracane przez polecenie cmdlet Get-PSSession.
Int32
Identyfikatory sesji można przekazywać do tego polecenia cmdlet.
Guid
Można przekazać identyfikatory wystąpień sesji do potoku za pomocą tego polecenia cmdlet.
String
Nazwy sesji można przekazywać do tego polecenia cmdlet.
Dane wyjściowe
Job
Jeśli wartość lub wartość domyślna parametru OutTarget jest Job, Receive-PSSession zwraca obiekt zadania.
PSObject
Ten cmdlet zwraca wyniki poleceń uruchomionych w rozłączonej sesji, jeśli takie są.
Uwagi
Program PowerShell zawiera następujące aliasy dla Receive-PSSession:
- Wszystkie platformy:
rcsn
Ten cmdlet jest dostępny tylko na platformach Windows.
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ść OutputBufferingMode opcji sesji to Drop, a bufor wyjściowy jest pełny, polecenie rozpoczyna usuwanie danych wyjściowych.
Receive-PSSession nie może odzyskać tego wyniku. 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 PSSession podczas nawiązywania połączenia z PSSession lub odbierania wyników. Parametr SessionOptionReceive-PSSession 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 poleceń cmdlet
New-PSSessionlubInvoke-Command, oraz podczas rozłączania się z PSSession. - Właściwość IdleTimeout 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 w sesji zdalnej przy użyciu parametru AsJob polecenia cmdlet Invoke-Command, obiekt zadania zostanie utworzony w bieżącej sesji, chociaż 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 wszelkie wyniki, które zostały do niego zwrócone, 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 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, używając 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 połączyć się z sesją, a następnie użyć 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 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 PSSession stan sesji jest rozłączony, a dostępność jest ustawiona na Brak.
- Wartość właściwości State jest relatywna względem aktualnej sesji. Wartość Rozłączone 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ści Brak wskazuje, że można nawiązać połączenie z sesją. Wartość Zajęta wskazuje, że nie można nawiązać połączenia z PSSession, ponieważ jest połączona z inną sesją.
- Aby uzyskać więcej informacji na temat wartości właściwości sesji State, zobacz RunspaceState.
- Aby uzyskać więcej informacji na temat wartości właściwości sesji Availability, odwiedź sekcję RunspaceAvailability.