Freigeben über


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

PSSession

Sie können Sitzungsobjekte, z. B. die vom Cmdlet Get-PSSession zurückgegebenen, an dieses Cmdlet übergeben.

Int32

Sie können Sitzungs-IDs an dieses Cmdlet weiterleiten.

Guid

Sie können die instance-IDs von Sitzungen über dieses Cmdlet weiterleiten.

String

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.