Receive-PSSession
Ruft die Ergebnisse von Befehlen in getrennten Sitzungen ab.
Syntax
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>]
Beschreibung
Das Cmdlet Receive-PSSession ruft die Ergebnisse von Befehlen ab, die in Windows PowerShell Sitzungen (PSSession) ausgeführt werden, die getrennt wurden. Wenn die Sitzung derzeit verbunden ist, ruft Receive-PSSession die Ergebnisse von Befehlen ab, die ausgeführt wurden, als die Sitzung getrennt wurde. Wenn die Sitzung weiterhin getrennt ist, stellt Receive-PSSession eine Verbindung mit der Sitzung her, setzt alle ausgesetzten Befehle fort und ruft die Ergebnisse der in der Sitzung ausgeführten Befehle ab.
Sie können eine Receive-PSSession zusätzlich zu oder anstelle eines Connect-PSSession-Befehls verwenden. Receive-PSSession kann eine Verbindung mit jeder getrennten oder erneut verbundenen Sitzung herstellen. Dazu gehören diejenigen, die in anderen Sitzungen oder auf anderen Computern gestartet wurden.
Receive-PSSession funktioniert für PSSessions , die absichtlich getrennt wurden, z. B. mithilfe des Cmdlets Disconnect-PSSession oder des Parameters InDisconnectedSession des cmdlets Invoke-Command oder unbeabsichtigt, z. B. durch eine Netzwerkunterbrechung.
Bei Verwendung des Receive-PSSession-Cmdlets zum Verbinden mit einer Sitzung, in der keine Befehle ausgeführt werden oder ausgesetzt wurden, stellt Receive-PSSession eine Verbindung mit der Sitzung her, gibt aber keine Ausgaben oder Fehler zurück.
Weitere Informationen zum Feature „Getrennte Sitzungen“ finden Sie unter about_Remote_Disconnected_Sessions.
Dieses Cmdlet wurde in Windows PowerShell 3.0 eingeführt.
Beispiele
Beispiel 1: Herstellen einer Verbindung mit einer PSSession
PS C:\> Receive-PSSession -ComputerName Server01 -Name ITTask
Dieser Befehl verwendet das Receive-PSSession-Cmdlet zum Herstellen einer Verbindung mit der ITTask-Sitzung auf dem Computer Server01 und zum Abrufen der Ergebnisse von Befehlen, die in der Sitzung ausgeführt wurden.
Da der Befehl den OutTarget-Parameter nicht verwendet, werden die Ergebnisse in der Befehlszeile angezeigt.
Beispiel 2: Abrufen der Ergebnisse aller Befehle in getrennten Sitzungen
PS C:\> Get-PSSession -ComputerName Server01, Server02 | Receive-PSSession
Dieser Befehl ruft die Ergebnisse aller Befehle ab, die in allen getrennten Sitzungen auf den Computern Server01 und Server02 ausgeführt werden.
Wenn eine Sitzung nicht getrennt wurde oder keine Befehle ausführt, stellt Receive-PSSession keine Verbindung mit der Sitzung her und gibt keine Ausgaben oder Fehler zurück.
Beispiel 3: Abrufen der Ergebnisse eines Skripts, das in einer Sitzung ausgeführt wird
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
Dieser Befehl verwendet das Receive-PSSession-Cmdlet zum Abrufen von Ergebnissen eines Skripts, das in der ITTask-Sitzung auf dem Computer Server01 ausgeführt wurde.
Der Befehl verwendet die Parameter ComputerName und Name, um die getrennte Sitzung zu identifizieren. Er verwendet den OutTarget-Parameter mit dem Wert Job, um Receive-PSSession anzuweisen, die Ergebnisse als Auftrag zurückzugeben, und den JobName-Parameter, um einen Namen für den Auftrag in der neu verbundenen Sitzung anzugeben.
Der Befehl verwendet den Credential-Parameter , um den Befehl Receive-PSSession mithilfe der Berechtigungen eines Domänenadministrators auszuführen.
Die Ausgabe zeigt, dass Receive-PSSession die Ergebnisse als Auftrag in der aktuellen Sitzung zurückgegeben hat. Verwenden Sie zum Abrufen der Auftragsergebnisse einen Receive-Job-Befehl.
Beispiel 4: Abrufen von Ergebnissen nach einem Netzwerkausfall
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
Dieses Beispiel verwendet das Receive-PSSession-Cmdlet zum Abrufen der Ergebnisse eines Auftrags, nachdem eine Sitzungsverbindung durch einen Netzwerkausfall unterbrochen wurde. Windows PowerShell versucht automatisch, die Sitzung für die nächsten vier Minuten einmal pro Sekunde wieder herzustellen, und gibt den Vorgang nur dann auf, wenn alle Versuche im Vier-Minuten-Intervall fehlschlagen.
Beispiel 5: Erneute Verbindung mit getrennten Sitzungen
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
In diesem Beispiel wird das Receive-PSSession-Cmdlet verwendet, um die Verbindung mit Sitzungen wiederherzustellen, die absichtlich getrennt wurden, und die Ergebnisse der in den Sitzungen ausgeführten Aufträge abzurufen.
Beispiel 6: Ausführen eines Auftrags in einer getrennten Sitzung
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
Dieses Beispiel zeigt, was mit einem Auftrag geschieht, der in einer getrennten Sitzung ausgeführt wird.
Parameter
-AllowRedirection
Gibt an, dass dieses Cmdlet die Umleitung dieser Verbindung zu einem alternativen URI (Uniform Resource Identifier) zulässt.
Bei Verwendung des ConnectionURI-Parameters kann das Remoteziel eine Anweisung zum Umleiten an einen anderen URI zurückgeben. Standardmäßig leitet Windows PowerShell verbindungen nicht um, aber Sie können diesen Parameter verwenden, um die Verbindung umzuleiten.
Sie können auch einschränken, wie oft die Verbindung umgeleitet wird, indem Sie den MaximumConnectionRedirectionCount-Optionswert der Sitzung ändern. Verwenden Sie den Parameter MaximumRedirection des cmdlets New-PSSessionOption, oder legen Sie die MaximumConnectionRedirectionCount-Eigenschaft der $PSSessionOption Einstellungsvariablen fest. Der Standardwert ist 5.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-ApplicationName
Gibt eine Anwendung an. Dieses Cmdlet stellt nur eine Verbindung mit Sitzungen her, die die angegebene Anwendung verwenden.
Geben Sie das Anwendungsnamensegment des Verbindungs-URI ein. Im folgenden Verbindungs-URI lautet der Anwendungsname beispielsweise WSMan: https://localhost:5985/WSMAN
. Der Anwendungsname einer Sitzung wird in der Runspace.ConnectionInfo.AppName-Eigenschaft der Sitzung gespeichert.
Der Wert dieses Parameters wird verwendet, um Sitzungen auszuwählen und zu filtern. Er ändert nicht die von der Sitzung verwendete Anwendung.
Type: | String |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Authentication
Gibt den Mechanismus an, der zum Authentifizieren der Anmeldeinformationen des Benutzers im Befehl verwendet wird, um die Verbindung mit der getrennten Sitzung wiederherzustellen. Zulässige Werte für diesen Parameter:
- Standard
- Basic
- Credssp
- Digest
- Kerberos
- Aushandeln
- NegotiateWithImplicitCredential
Der Standardwert ist Default.
Weitere Informationen zu den Werten dieses Parameters finden Sie unter AuthenticationMechanism Enumeration.
Achtung
Die CredSSP-Authentifizierung (Credential Security Support Provider), bei der die Benutzeranmeldeinformationen an einen Remotecomputer übergeben werden, um authentifiziert zu werden, ist für Befehle konzipiert, die eine Authentifizierung für mehr als eine Ressource erfordern, z. B. den Zugriff auf eine Remotenetzwerkfreigabe. Dieser Mechanismus erhöht das Sicherheitsrisiko des Remotevorgangs. Wenn die Sicherheit des Remotecomputers gefährdet ist, können die an ihn übergebenen Anmeldeinformationen zum Steuern der Netzwerksitzung verwendet werden.
Type: | AuthenticationMechanism |
Accepted values: | Default, Basic, Negotiate, NegotiateWithImplicitCredential, Credssp, Digest, Kerberos |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-CertificateThumbprint
Gibt das digitale Zertifikat für öffentliche Schlüssel (X.509) eines Benutzerkontos mit der Berechtigung zum Herstellen einer Verbindung mit der getrennten Sitzung an. Geben Sie den Zertifikatfingerabdruck des Zertifikats ein.
Zertifikate werden bei der clientzertifikatbasierten Authentifizierung verwendet. Sie können nur lokalen Benutzerkonten zugeordnet werden. Sie funktionieren nicht mit Domänenkonten.
Verwenden Sie zum Abrufen eines Zertifikatfingerabdrucks den Befehl Get-Item oder Get-ChildItem im Windows PowerShell-Certificat:-Laufwerk.
Type: | String |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-ComputerName
Gibt den Computer an, auf dem die getrennte Sitzung gespeichert ist. Sitzungen werden auf dem Computer gespeichert, der sich auf der Serverseite befindet oder das Ende einer Verbindung empfängt. Die Standardeinstellung ist der lokale Computer.
Geben Sie den NetBIOS-Namen, eine IP-Adresse oder einen vollqualifizierten Domänennamen eines Computers ein. Platzhalterzeichen sind nicht zulässig. Geben Sie zum Angeben des lokalen Computers den Computernamen, localhost oder einen Punkt (.) ein.
Type: | String |
Aliases: | Cn |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-ConfigurationName
Stellt nur eine Verbindung mit Sitzungen her, die die angegebene Sitzungskonfiguration verwenden.
Geben Sie einen Konfigurationsnamen oder den vollqualifizierten Ressourcen-URI für eine Sitzungskonfiguration ein. Wenn Sie nur den Konfigurationsnamen angeben, wird der folgende Schema-URI vorangestellt: https://schemas.microsoft.com/powershell
. Der Konfigurationsname einer Sitzung befindet sich in der ConfigurationName-Eigenschaft der Sitzung.
Der Wert dieses Parameters wird verwendet, um Sitzungen auszuwählen und zu filtern. Er ändert nicht die von der Sitzung verwendete Sitzungskonfiguration.
Weitere Informationen zu Sitzungskonfigurationen finden Sie unter about_Session_Configurations.
Type: | String |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Confirm
Hiermit werden Sie vor der Ausführung des Cmdlets zur Bestätigung aufgefordert.
Type: | SwitchParameter |
Aliases: | cf |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-ConnectionUri
Gibt einen URI an, der den Verbindungsendpunkt definiert, der zum wiederherstellen der Verbindung mit der getrennten Sitzung verwendet wird.
Der URI muss vollqualifiziert sein. Das Format dieser Zeichenfolge lautet wie folgt:
<Transport>://<ComputerName>:<Port>/<ApplicationName>
Der Standardwert lautet:
https://localhost:5985/WSMAN
Wenn Sie keinen Verbindungs-URI angeben, können Sie die Parameter UseSSL, ComputerName, Port und ApplicationName verwenden, um die Verbindungs-URI-Werte anzugeben.
Gültige Werte für das Transport-Segment des URI sind „HTTP“ und „HTTPS“. Wenn Sie einen Verbindungs-URI mit einem Transportsegment angeben, aber keinen Port angeben, wird die Sitzung mit den Standardsports 80 für HTTP und 443 für HTTPS erstellt. Um die Standardports für Windows PowerShell-Remoting zu verwenden, geben Sie Port 5985 für HTTP bzw. 5986 für HTTPS an.
Wenn der Zielcomputer die Verbindung an einen anderen URI umleitet, verhindert Windows PowerShell die Umleitung, sofern Sie nicht den AllowRedirection-Parameter im Befehl verwenden.
Type: | Uri |
Aliases: | URI, CU |
Position: | 0 |
Default value: | https://localhost:5985/WSMAN |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Credential
Gibt ein Benutzerkonto mit der Berechtigung zum Herstellen einer Verbindung mit der getrennten Sitzung an. Der Standardwert ist der aktuelle Benutzer.
Geben Sie einen Benutzernamen ein, z. B. „User01“ oder „Domain01\User01“. Oder geben Sie ein PSCredential-Objekt ein, z. B. ein objekt, das vom Cmdlet Get-Credential generiert wird. Wenn Sie einen Benutzernamen eingeben, werden Sie von diesem Cmdlet zur Eingabe eines Kennworts aufgefordert.
Type: | PSCredential |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Id
Gibt die ID der getrennten Sitzung an. Der Id-Parameter funktioniert nur, wenn die getrennte Sitzung zuvor mit der aktuellen Sitzung verbunden war.
Dieser Parameter ist gültig, aber nicht wirksam, wenn die Sitzung auf dem lokalen Computer gespeichert ist, aber nicht mit der aktuellen Sitzung verbunden wurde.
Type: | Int32 |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-InstanceId
Gibt die Instanz-ID der getrennten Sitzung an.
Die instance-ID ist eine GUID, die eine PSSession auf einem lokalen oder Remotecomputer eindeutig identifiziert.
Die instance-ID wird in der InstanceID-Eigenschaft der PSSession gespeichert.
Type: | Guid |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-JobName
Gibt einen Anzeigenamen für den Auftrag an, der von Receive-PSSession zurückgegeben wird.
Receive-PSSession gibt einen Auftrag zurück, wenn der Wert des OutTarget-Parameters Job ist oder der Auftrag, der in der getrennten Sitzung ausgeführt wird, in der aktuellen Sitzung gestartet wurde.
Wenn der Auftrag, der in der getrennten Sitzung ausgeführt wird, in der aktuellen Sitzung gestartet wurde, verwendet Windows PowerShell das ursprüngliche Auftragsobjekt in der Sitzung wieder und ignoriert den Wert des JobName-Parameters.
Wenn der Auftrag, der in der getrennten Sitzung ausgeführt wird, in einer anderen Sitzung gestartet wurde, erstellt Windows PowerShell ein neues Auftragsobjekt. Es wird ein Standardname verwendet, aber Sie können diesen Parameter verwenden, um den Namen zu ändern.
Wenn der Standardwert oder explizite Wert des OutTarget-Parameters nicht Job ist, ist der Befehl erfolgreich, aber der JobName-Parameter hat keine Auswirkung.
Type: | String |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Name
Gibt den Anzeigenamen der getrennten Sitzung an.
Type: | String |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-OutTarget
Bestimmt, wie die Sitzungsergebnisse zurückgegeben werden. Zulässige Werte für diesen Parameter:
- Auftrag Gibt die Ergebnisse asynchron in ein Auftragsobjekt zurück. Sie können den JobName-Parameter verwenden, um einen Namen oder einen neuen Namen für den Auftrag festzulegen.
- Host. Gibt die Ergebnisse (synchron) an die Befehlszeile zurück. Wenn der Befehl fortgesetzt wird oder die Ergebnisse aus einer großen Anzahl von Objekten bestehen, kann die Antwort verzögert werden.
Der Standardwert des OutTarget-Parameters ist Host. Wenn jedoch der Befehl, der in der getrennten Sitzung empfangen wird, in der aktuellen Sitzung gestartet wurde, ist der Standardwert des OutTarget-Parameters die Form, in der der Befehl gestartet wurde. Wenn der Befehl als Auftrag gestartet wurde, wird er standardmäßig als Auftrag zurückgegeben. Andernfalls wird er standardmäßig an das Hostprogramm zurückgegeben.
In der Regel zeigt das Hostprogramm die zurückgegebenen Objekte ohne Verzögerung in der Befehlszeile an, dieses Verhalten kann jedoch variieren.
Type: | OutTarget |
Accepted values: | Default, Host, Job |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Port
Gibt den Netzwerkport auf dem Remotecomputer an, der für die Verbindungswiederherstellung mit der Sitzung verwendet wird. Zum Herstellen einer Verbindung mit einem Remotecomputer muss der Remotecomputer den für die Verbindung verwendeten Port abhören. Die Standardports sind 5985, d. h. der WinRM-Port für HTTP, und 5986, der WinRM-Port für HTTPS.
Bevor ein alternativer Port verwendet werden kann, müssen Sie den WinRM-Listener auf dem Remotecomputer für das Abhören an diesen Port konfigurieren. Um den Listener zu konfigurieren, geben Sie die folgenden beiden Befehle an der Windows PowerShell-Eingabeaufforderung ein:
Remove-Item -Path WSMan:\Localhost\listener\listener* -Recurse
New-Item -Path WSMan:\Localhost\listener -Transport http -Address * -Port \<port-number\>
Verwenden Sie den Port-Parameter nur, wenn es unbedingt notwendig ist. Der im Befehl festgelegte Port gilt für alle Computer oder Sitzungen, für die der Befehl ausgeführt wird. Eine alternative Porteinstellung kann verhindern, dass der Befehl auf allen Computern ausgeführt wird.
Type: | Int32 |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Session
Gibt die getrennte Sitzung an. Geben Sie eine Variable ein, die die PSSession enthält, oder einen Befehl, der die PSSession erstellt oder abruft, z. B. einen Get-PSSession-Befehl.
Type: | PSSession |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-SessionOption
Gibt erweiterte Optionen für die Sitzung an. Geben Sie ein SessionOption-Objekt ein, z. B. ein Objekt, das Sie mit dem Cmdlet New-PSSessionOption erstellen, oder eine Hashtabelle, in der die Schlüssel Sitzungsoptionsnamen sind und die Werte Sitzungsoptionswerte sind.
Die Standardwerte für die Optionen werden durch den Wert der $PSSessionOption-Einstellungsvariablen bestimmt, sofern festgelegt. Andernfalls werden die Standardwerte durch Optionen festgelegt, die in der Sitzungskonfiguration festgelegt sind.
Die Sitzungsoptionswerte haben Vorrang vor Standardwerten für Sitzungen, die in der $PSSessionOption-Einstellungsvariablen und in der Sitzungskonfiguration festgelegt sind. Allerdings haben sie nicht Vorrang vor Höchstwerten, Kontingenten oder Grenzwerten, die in der Sitzungskonfiguration festgelegt sind.
Eine Beschreibung der Sitzungsoptionen, die die Standardwerte enthält, finden Sie unter New-PSSessionOption. Informationen zur $PSSessionOption Einstellungsvariablen finden Sie unter about_Preference_Variables. Weitere Informationen zu Sitzungskonfigurationen finden Sie unter about_Session_Configurations.
Type: | PSSessionOption |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-UseSSL
Gibt an, dass dieses Cmdlet das SSL-Protokoll (Secure Sockets Layer) verwendet, um eine Verbindung mit der getrennten Sitzung herzustellen. Standardmäßig wird SSL nicht verwendet.
WS-Management verschlüsselt alle Windows PowerShell-Inhalte, die über das Netzwerk übertragen werden. UseSSL ist ein zusätzlicher Schutz, der die Daten über eine HTTPS-Verbindung anstatt über eine HTTP-Verbindung sendet.
Wenn Sie diesen Parameter verwenden, ssl jedoch nicht für den Port verfügbar ist, der für den Befehl verwendet wird, schlägt der Befehl fehl.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-WhatIf
Zeigt, was geschieht, wenn das Cmdlet ausgeführt wird. Das Cmdlet wird nicht ausgeführt.
Type: | SwitchParameter |
Aliases: | wi |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Eingaben
Sie können Sitzungsobjekte, z. B. die vom Cmdlet Get-PSSession zurückgegebenen, an dieses Cmdlet übergeben.
Sie können Sitzungs-IDs an dieses Cmdlet weiterleiten.
Sie können die instance-IDs von Sitzungen über dieses Cmdlet weiterleiten.
Sie können Sitzungsnamen an dieses Cmdlet weiterleiten.
Ausgaben
System.Management.Automation.Job or PSObject
Dieses Cmdlet gibt die Ergebnisse von Befehlen zurück, die in der getrennten Sitzung ausgeführt wurden, falls vorhanden. Wenn der Wert oder Standardwert des OutTarget-Parameters Job ist, gibt Receive-PSSession ein Auftragsobjekt zurück. Andernfalls werden Objekte zurückgeben, die diese Befehlsergebnisse darstellen.
Hinweise
Receive-PSSession ruft nur Ergebnisse von Sitzungen ab, die getrennt wurden. Nur Sitzungen, die mit Computern verbunden sind oder auf denen Windows PowerShell 3.0 oder höhere Versionen ausgeführt werden, können getrennt und wieder verbunden werden.
Wenn die Befehle, die in der getrennten Sitzung ausgeführt wurden, keine Ergebnisse generiert haben, oder wenn die Ergebnisse bereits an eine andere Sitzung zurückgegeben wurden, generiert Receive-PSSession keine Ausgabe.
Der Ausgabepuffermodus einer Sitzung bestimmt, wie die Befehle in der Sitzung Ausgaben verwalten, wenn die Sitzung getrennt wird. Wenn der Wert der Option OutputBufferingMode der Sitzung Drop ist und der Ausgabepuffer voll ist, beginnt der Befehl, die Ausgabe zu löschen. Receive-PSSession kann diese Ausgabe nicht wiederherstellen. Weitere Informationen zur Option "Ausgabepuffermodus" finden Sie in den Hilfethemen für die Cmdlets New-PSSessionOption und New-PSTransportOption.
Sie können den Wert des Leerlauftimeouts einer PSSession nicht ändern, wenn Sie eine Verbindung mit der PSSession herstellen oder Ergebnisse erhalten. Der SessionOption-Parameter von Receive-PSSession nimmt ein SessionOption-Objekt an, das über einen IdleTimeout-Wert verfügt. Der IdleTimeout-Wert des SessionOption-Objekts und der IdleTimeout-Wert der $PSSessionOption Variablen werden jedoch ignoriert, wenn sie eine Verbindung mit einer PSSession herstellt oder Ergebnisse empfängt.
Sie können das Leerlauftimeout einer PSSession festlegen und ändern, wenn Sie die PSSession erstellen, indem Sie die Cmdlets New-PSSession oder Invoke-Command verwenden und die Verbindung mit der PSSession trennen.
Die IdleTimeout-Eigenschaft einer PSSession ist für getrennte Sitzungen von entscheidender Bedeutung, da sie bestimmt, wie lange eine getrennte Sitzung auf dem Remotecomputer verwaltet wird. Getrennte Sitzungen gelten vom Moment ihrer Trennung an als im Leerlauf, selbst wenn Befehle in der getrennten Sitzung ausgeführt werden.
Wenn Sie einen Startauftrag in einer Remotesitzung mithilfe des AsJob-Parameters des Cmdlets Invoke-Command starten, wird das Auftragsobjekt in der aktuellen Sitzung erstellt, obwohl der Auftrag in der Remotesitzung ausgeführt wird. Wenn Sie die Remotesitzung trennen, wird das Auftragsobjekt in der aktuellen Sitzung vom Auftrag getrennt. Das Auftragsobjekt enthält noch alle Ergebnisse, die an es zurückgegeben wurden, empfängt aber keine neuen Ergebnisse aus dem Auftrag in der getrennten Sitzung mehr.
Wenn ein anderer Client eine Verbindung mit der Sitzung herstellt, die den laufenden Auftrag enthält, stehen die Ergebnisse, die in der ursprünglichen Sitzung an das ursprüngliche Auftragsobjekt übermittelt wurden, in der neu verbundenen Sitzung nicht zur Verfügung. Nur Ergebnisse, die nicht an das ursprüngliche Auftragsobjekt übermittelt wurden, sind in der neu verbundenen Sitzung verfügbar.
Entsprechendes gilt, wenn Sie ein Skript in einer Sitzung starten und dann die Verbindung mit der Sitzung trennen: Alle Ergebnisse, die das Skript vor der Trennung an die Sitzung übermittelt, stehen für einen anderen Client, der eine Verbindung mit der Sitzung herstellt, nicht zur Verfügung.
Um Datenverlust in Sitzungen zu verhindern, die Sie trennen möchten, verwenden Sie den InDisconnectedSession-Parameter des Invoke-Command-Cmdlets. Da dieser Parameter verhindert, dass Ergebnisse an die aktuelle Sitzung zurückgegeben werden, sind alle Ergebnisse verfügbar, wenn die Verbindung mit der Sitzung wiederhergestellt wird.
Sie können auch Datenverluste verhindern, indem Sie das Cmdlet Invoke-Command verwenden, um einen Start-Job-Befehl in der Remotesitzung auszuführen. In diesem Fall wird das Auftragsobjekt in der Remotesitzung erstellt. Sie können das Receive-PSSession-Cmdlet nicht verwenden, um die Auftragsergebnisse abzurufen. Verwenden Sie stattdessen das Cmdlet Connect-PSSession , um eine Verbindung mit der Sitzung herzustellen, und verwenden Sie dann das Cmdlet Invoke-Command , um einen Receive-Job-Befehl in der Sitzung auszuführen.
Wenn eine Sitzung, die einen laufenden Auftrag enthält, getrennt und die Verbindung anschließend wiederhergestellt wird, wird das ursprüngliche Auftragsobjekt nur dann wiederverwendet, wenn der Auftrag getrennt und wieder mit der gleichen Sitzung verbunden wird und der Befehl zur Verbindungswiederherstellung keinen neuen Auftragsnamen angibt. Wenn bei der Verbindungswiederherstellung der Sitzung eine andere Clientsitzung verwendet oder ein neuer Auftragsname angegeben wird, erstellt Windows PowerShell ein neues Auftragsobjekt für die neue Sitzung.
Wenn Sie eine PSSession trennen, lautet der Sitzungsstatus Getrennt, und die Verfügbarkeit ist Keine.
Der Wert der State Eigenschaft bezieht sich auf die aktuelle Sitzung. Daher bedeutet der Wert Disconnected, dass die PSSession nicht mit der aktuellen Sitzung verbunden ist. Dies bedeutet jedoch nicht, dass die PSSession von allen Sitzungen getrennt ist. Sie kann mit einer anderen Sitzung verbunden sein. Um festzustellen, ob Sie eine Sitzungsverbindung herstellen bzw. wiederherstellen können, verwenden Sie die Availability-Eigenschaft.
Ein Availability-Wert von None gibt an, dass eine Verbindung mit der Sitzung hergestellt werden kann. Der Wert Busy gibt an, dass Sie keine Verbindung mit der PSSession herstellen können, da sie mit einer anderen Sitzung verbunden ist.
Weitere Informationen zu den Werten der State-Eigenschaft von Sitzungen finden Sie unter RunspaceState-Enumeration in der MSDN Library.
Weitere Informationen zu den Werten der Availability-Eigenschaft von Sitzungen finden Sie unter RunspaceAvailability Enumeration.