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

Beschreibung

Dieses Cmdlet ist nur auf der Windows-Plattform verfügbar.

Das Receive-PSSession Cmdlet ruft die Ergebnisse von Befehlen ab, die in PowerShell-Sitzungen (PSSession) ausgeführt werden, die getrennt wurden. Wenn die Sitzung derzeit verbunden ist, ruft die Ergebnisse von Befehlen ab, die ausgeführt wurden, Receive-PSSession wenn die Sitzung getrennt wurde. Wenn die Sitzung weiterhin getrennt ist, wird eine Verbindung mit der Sitzung hergestellt, werden alle Befehle fortgesetzt, Receive-PSSession die angehalten wurden, und die Ergebnisse der Befehle, die in der Sitzung ausgeführt werden, abgerufen.

Dieses Cmdlet wurde in PowerShell 3.0 eingeführt.

Sie können einen Receive-PSSession Befehl zusätzlich oder anstelle eines Connect-PSSession Befehls verwenden. Receive-PSSession kann eine Verbindung mit einer getrennten oder erneut verbundenen Sitzung herstellen, die in anderen Sitzungen oder auf anderen Computern gestartet wurde.

Receive-PSSession funktioniert auf PSSessions , die absichtlich mit dem Cmdlet oder dem Disconnect-PSSessionInvoke-CommandInDisconnectedSession-Parameter getrennt wurden. Oder durch eine Netzwerkunterbrechung versehentlich getrennt.

Wenn Sie das Receive-PSSession Cmdlet zum Herstellen einer Verbindung mit einer Sitzung verwenden, in der keine Befehle ausgeführt oder angehalten werden, Receive-PSSession wird eine Verbindung mit der Sitzung hergestellt, aber keine Ausgabe oder Fehler zurückgegeben.

Weitere Informationen zum Feature „Getrennte Sitzungen“ finden Sie unter about_Remote_Disconnected_Sessions.

Einige Beispiele verwenden das Splatting, um die Zeilenlänge zu verringern und die Lesbarkeit zu verbessern. Weitere Informationen finden Sie unter about_Splatting.

Beispiele

Beispiel 1: Herstellen einer Verbindung mit einer PSSession

In diesem Beispiel wird eine Verbindung mit einer Sitzung auf einem Remotecomputer hergestellt und die Ergebnisse von Befehlen abgerufen, die in einer Sitzung ausgeführt werden.

Receive-PSSession -ComputerName Server01 -Name ITTask

Der Receive-PSSession Remotecomputer gibt den Remotecomputer mit dem Parameter "ComputerName " an. Der Parameter "Name " identifiziert die ITTask-Sitzung auf dem Server01-Computer. Im Beispiel werden die Ergebnisse von Befehlen abgerufen, die in der ITTask-Sitzung ausgeführt wurden.

Da der Befehl den OutTarget-Parameter nicht verwendet, werden die Ergebnisse in der Befehlszeile angezeigt.

Beispiel 2: Abrufen von Ergebnissen aller Befehle auf getrennten Sitzungen

Dieses Beispiel ruft die Ergebnisse aller Befehle ab, die in allen getrennten Sitzungen auf zwei Remotecomputern ausgeführt werden.

Wenn eine Sitzung nicht getrennt wurde oder keine Befehle ausgeführt wird, stellt keine Verbindung mit der Sitzung her und Receive-PSSession gibt keine Ausgabe oder Fehler zurück.

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

Get-PSSession verwendet den ComputerName-Parameter , um die Remotecomputer anzugeben. Die Objekte werden an die Pipeline gesendet.Receive-PSSession

Beispiel 3: Abrufen der Ergebnisse eines Skripts, das in einer Sitzung ausgeführt wird

In diesem Beispiel wird das Receive-PSSession Cmdlet verwendet, um die Ergebnisse eines Skripts abzurufen, das in einer Remotecomputersitzung ausgeführt wurde.

$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

Der Befehl verwendet die Parameter ComputerName und Name, um die getrennte Sitzung zu identifizieren. Es verwendet den OutTarget-Parameter mit einem Wert von Job, um die Ergebnisse als Auftrag zurückzugeben Receive-PSSession . Der JobName-Parameter gibt einen Namen für den Auftrag in der erneut verbundenen Sitzung an. Der Parameter "Anmeldeinformationen " führt den Receive-PSSession Befehl mithilfe der Berechtigungen eines Domänenadministrators aus.

Die Ausgabe zeigt, dass Receive-PSSession die Ergebnisse als Auftrag in der aktuellen Sitzung zurückgegeben wurden. Verwenden Sie einen Receive-Job Befehl, um die Auftragsergebnisse abzurufen.

Beispiel 4: Abrufen von Ergebnissen nach einem Netzwerkausfall

In diesem Beispiel wird das Receive-PSSession Cmdlet verwendet, um die Ergebnisse eines Auftrags abzurufen, nachdem ein Netzwerkausfall eine Sitzungsverbindung unterbrochen hat. PowerShell versucht automatisch, die Sitzung einmal pro Sekunde für die nächsten vier Minuten wieder herzustellen und den Aufwand nur zurückzugeben, wenn alle Versuche im Vier-Minuten-Intervall fehlschlagen.

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

Das New-PSSession Cmdlet erstellt eine Sitzung auf dem Server01-Computer und speichert die Sitzung in der $s Variablen. Die $s Variable zeigt an, dass der Zustand geöffnet ist und die Verfügbarkeit verfügbar ist. Diese Werte geben an, dass Sie mit der Sitzung verbunden sind und Befehle in der Sitzung ausführen können.

Das Invoke-Command Cmdlet führt ein Skript in der Sitzung in der $s Variablen aus. Die Skriptausführung beginnt, und es werden Daten zurückgegeben, aber die Sitzung wird durch einen Netzwerkausfall unterbrochen. Der Benutzer muss die Sitzung beenden und den lokalen Computer neu starten.

Wenn der Computer neu gestartet wird, startet der Benutzer PowerShell und führt einen Get-PSSession Befehl aus, um Sitzungen auf dem Server01-Computer abzurufen. Die Ausgabe zeigt, dass die AD-Sitzung weiterhin auf dem Server01-Computer vorhanden ist. Der Zustand gibt an, dass die AD-Sitzung getrennt wird. Der Verfügbarkeitswert "None" gibt an, dass die Sitzung nicht mit Clientsitzungen verbunden ist.

Das Receive-PSSession Cmdlet stellt eine Verbindung mit der AD-Sitzung her und ruft die Ergebnisse des Skripts ab, das in der Sitzung ausgeführt wurde. Der Befehl verwendet den OutTarget-Parameter , um die Ergebnisse in einem Auftrag namens ADJob anzufordern. Der Befehl gibt ein Auftragsobjekt zurück, und die Ausgabe gibt an, dass das Skript weiterhin ausgeführt wird.

Das Get-PSSession Cmdlet wird verwendet, um den Auftragsstatus zu überprüfen. Die Ausgabe bestätigt, dass das Receive-PSSession Cmdlet erneut mit der AD-Sitzung verbunden ist, die jetzt geöffnet und für Befehle verfügbar ist. Und das Skript hat die Ausführung fortgesetzt und die Skriptergebnisse erhalten.

Beispiel 5: Erneute Verbindung zu getrennten Sitzungen

In diesem Beispiel wird das Receive-PSSession Cmdlet verwendet, um eine Verbindung mit Sitzungen erneut herzustellen, die absichtlich getrennt wurden und die Ergebnisse von Aufträgen abrufen, die in den Sitzungen ausgeführt wurden.

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

Das Invoke-Command Cmdlet führt ein Skript auf drei Remotecomputern aus. Da das Skript Daten aus mehreren Datenbanken sammelt und zusammenfasst, dauert das Skript häufig eine erweiterte Zeit zum Beenden. Der Befehl verwendet den InDisconnectedSession-Parameter , der die Skripts startet und dann sofort die Sitzungen trennt. Der SessionOption-Parameter erweitert den IdleTimeout-Wert der getrennten Sitzung. Getrennte Sitzungen werden ab dem Zeitpunkt, an dem sie getrennt sind, als Leerlauf betrachtet. Es ist wichtig, den Leerlauf für lange genug festzulegen, damit die Befehle abgeschlossen werden können und Sie eine Verbindung mit der Sitzung erneut herstellen können. Sie können das IdleTimeout nur festlegen, wenn Sie die PSSession erstellen und sie nur ändern, wenn Sie die Verbindung mit dem Objekt trennen. Sie können den IdleTimeout-Wert nicht ändern, wenn Sie eine Verbindung mit einer PSSession herstellen oder dessen Ergebnisse erhalten. Nach dem Ausführen des Befehls beendet der Benutzer PowerShell und schließt den Computer.

Am nächsten Tag wird Windows fortgesetzt, PowerShell gestartet und verwendet Get-PSSession , um die Sitzungen abzurufen, in denen die Skripts ausgeführt wurden. Der Befehl identifiziert die Sitzungen durch den Computernamen, den Sitzungsnamen und den Namen der Sitzungskonfiguration und speichert die Sitzungen in der $s Variablen. Der Wert der $s Variable wird angezeigt und zeigt an, dass die Sitzungen getrennt werden, aber nicht beschäftigt sind.

Das Receive-PSSession Cmdlet verbindet die Sitzungen in der $s Variable und ruft ihre Ergebnisse ab. Der Befehl speichert die Ergebnisse in der $Results Variablen. Die $s Variable wird angezeigt und zeigt an, dass die Sitzungen verbunden und für Befehle verfügbar sind.

Das Skript führt dazu, dass die Variable in der $Results PowerShell-Konsole angezeigt wird. Wenn eine der Ergebnisse unerwartet ist, kann der Benutzer Befehle in den Sitzungen ausführen, um die Ursache zu untersuchen.

Beispiel 6: Ausführen eines Auftrags in einer getrennten Sitzung

In diesem Beispiel wird gezeigt, was mit einem Auftrag geschieht, der in einer getrennten Sitzung ausgeführt wird.

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

Das New-PSSession Cmdlet erstellt die Testsitzung auf dem Server01-Computer. Der Befehl speichert die Sitzung in der Variablen $s.

Das Invoke-Command Cmdlet führt einen Befehl in der Sitzung in der $s Variablen aus. Der Befehl verwendet den AsJob-Parameter , um den Befehl als Auftrag auszuführen und das Auftragsobjekt in der aktuellen Sitzung zu erstellen. Der Befehl gibt ein Auftragsobjekt zurück, das in der $j Variablen gespeichert ist. Die $j Variable zeigt das Auftragsobjekt an.

Das Sitzungsobjekt in der $s Variable wird an die Pipeline Disconnect-PSSession gesendet und die Sitzung wird getrennt.

Die $j Variable wird angezeigt und zeigt den Effekt des Trennens des Auftragsobjekts in der $j Variablen an. Der Status des Auftrags ist nun „Getrennt“.

Der Receive-Job Auftrag wird in der $j Variable ausgeführt. Die Ausgabe zeigt, dass der Auftrag die Ausgabe vor der Sitzung zurückgibt und der Auftrag getrennt wurde.

Das Connect-PSSession Cmdlet wird in derselben Clientsitzung ausgeführt. Der Befehl stellt eine Verbindung mit der Testsitzung auf dem Server01-Computer her und speichert die Sitzung in der $s2 Variablen.

Das Receive-PSSession Cmdlet ruft die Ergebnisse des Auftrags ab, der in der Sitzung ausgeführt wurde. Da der Befehl in derselben Sitzung ausgeführt wird, Receive-PSSession werden die Ergebnisse standardmäßig als Auftrag zurückgegeben und das gleiche Auftragsobjekt wiederverwendet. Der Befehl speichert den Auftrag in der $j2 Variablen. Das Receive-Job Cmdlet ruft die Ergebnisse des Auftrags in der $j Variablen ab.

Parameter

-AllowRedirection

Gibt an, dass dieses Cmdlet die Umleitung dieser Verbindung zu einem alternativen Uniform Resource Identifier (URI) ermöglicht.

Bei Verwendung des ConnectionURI-Parameters kann das Remoteziel eine Anweisung zum Umleiten an einen anderen URI zurückgeben. Standardmäßig leitet PowerShell keine Verbindungen um, aber Sie können diesen Parameter verwenden, um die Verbindung umleiten zu können.

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 oder legen Sie die MaximumConnectionRedirectionCount-Eigenschaft der $PSSessionOptionNew-PSSessionOption Einstellungsvariable fest. Der Standardwert ist 5.

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

-ApplicationName

Gibt eine Anwendung an. Dieses Cmdlet verbindet nur Sitzungen, die die angegebene Anwendung verwenden.

Geben Sie das Anwendungsnamensegment des Verbindungs-URI ein. Beispielsweise ist WSMan im folgenden Verbindungs-URI der Anwendungsname: http://localhost:5985/WSMAN

Der Anwendungsname einer Sitzung wird in der Runspace.ConnectionInfo.AppName-Eigenschaft der Sitzung gespeichert.

Der Wert des Parameters wird verwendet, um Sitzungen auszuwählen und zu filtern. Die Anwendung, die die Sitzung verwendet, wird nicht geändert.

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

-Authentication

Gibt den Mechanismus an, der zum Authentifizieren der Benutzeranmeldeinformationen im Befehl verwendet wird, um eine Verbindung mit einer getrennten Sitzung erneut herzustellen. Zulässige Werte für diesen Parameter:

  • Standard
  • Standard
  • Credssp
  • Digest
  • Kerberos
  • Aushandeln
  • NegotiateWithImplicitCredential

Der Standardwert ist Default.

Weitere Informationen zu den Werten dieses Parameters finden Sie unter AuthenticationMechanism Enumeration.

Achtung

Die Credential Security Support Provider (CredSSP)-Authentifizierung, in der die Benutzeranmeldeinformationen an einen Remotecomputer übergeben werden, der authentifiziert werden soll, ist für Befehle konzipiert, die die Authentifizierung auf mehreren Ressourcen erfordern, z. B. auf einen Remotenetzwerkfreigabe zugreifen. 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:Default
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. Zertifikate können nur lokalen Benutzerkonten zugeordnet werden und funktionieren nicht mit Domänenkonten.

Um einen Zertifikat-Fingerabdruck abzurufen, verwenden Sie Get-Item einen oder Get-ChildItem einen Befehl im PowerShell-Laufwerk Cert: .

Type:String
Position:Named
Default value:None
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 ein Ende einer Verbindung empfängt. Die Standardeinstellung ist der lokale Computer.

Geben Sie den NetBIOS-Namen, eine IP-Adresse oder einen vollqualifizierten Domänennamen (FQDN) eines Computers ein. Die Freihalterzeichen sind nicht zulässig. Geben Sie zum Angeben des lokalen Computers den Computernamen, einen Punkt (.) $env:COMPUTERNAMEoder localhost ein.

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

-ConfigurationName

Gibt den Namen einer Sitzungskonfiguration an. Dieses Cmdlet verbindet nur Sitzungen, 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:

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

Der Konfigurationsname einer Sitzung befindet sich in der ConfigurationName-Eigenschaft der Sitzung.

Der Wert des Parameters wird verwendet, um Sitzungen auszuwählen und zu filtern. Die Sitzungskonfiguration, die die Sitzung verwendet, wird nicht geändert.

Weitere Informationen zu Sitzungskonfigurationen finden Sie unter about_Session_Configurations.

Type:String
Position:Named
Default value:None
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
Accept pipeline input:False
Accept wildcard characters:False

-ConnectionUri

Gibt einen URI an, der den Verbindungsendpunkt definiert, der zum Erneuten Herstellen einer Verbindung mit der getrennten Sitzung verwendet wird.

Der URI muss vollqualifiziert sein. Das Format der Zeichenfolge lautet wie folgt:

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

Der Standardwert lautet:

http://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 Standardports erstellt: 80 für HTTP und 443 für HTTPS. Um die Standardports für PowerShell-Remoting zu verwenden, geben Sie Port 5985 für HTTP oder 5986 für HTTPS an.

Wenn der Zielcomputer die Verbindung zu einem anderen URI umleitet, verhindert PowerShell die Umleitung, es sei denn, Sie verwenden den AllowRedirection-Parameter im Befehl.

Type:Uri
Aliases:URI, CU
Position:0
Default value:http://localhost:5985/WSMAN
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 vom Cmdlet generiertes Get-CredentialPSCredential-Objekt ein. Wenn Sie einen Benutzernamen eingeben, werden Sie aufgefordert, das Kennwort einzugeben.

Anmeldeinformationen werden in einem PSCredential-Objekt gespeichert, und das Kennwort wird als SecureString gespeichert.

Hinweis

Weitere Informationen zum Datenschutz von SecureString finden Sie unter Wie sicher ist SecureString?.

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

-Id

Gibt die ID einer getrennten Sitzung an. Der Id-Parameter funktioniert nur, wenn die getrennte Sitzung zuvor mit der aktuellen Sitzung verbunden wurde.

Dieser Parameter ist gültig, aber nicht wirksam, wenn die Sitzung auf dem lokalen Computer gespeichert wird, aber nicht mit der aktuellen Sitzung verbunden war.

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

-InstanceId

Gibt die Instanz-ID der getrennten Sitzung an. Die Instanz-ID ist eine GUID, die eine PSSession auf einem lokalen oder Remotecomputer eindeutig identifiziert. Die Instanz-ID wird in der InstanceID-Eigenschaft der PSSession gespeichert.

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

-JobName

Gibt einen Anzeigenamen für den Auftrag an, Receive-PSSession der zurückgegeben wird.

Receive-PSSession gibt einen Auftrag zurück, wenn der Wert des OutTarget-Parameters "Job" 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 PowerShell das ursprüngliche Auftragsobjekt in der Sitzung 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 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, der JobName-Parameter hat jedoch keine Auswirkung.

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

-Name

Gibt den Anzeigenamen der getrennten Sitzung an.

Type:String
Position:Named
Default value:None
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 der Befehl, der in einer getrennten Sitzung empfangen wird, in der aktuellen Sitzung gestartet wurde, ist der Standardwert des Parameters OutTarget das Formular, in dem der Befehl gestartet wurde. Wenn der Befehl standardmäßig als Auftrag gestartet wurde, wird er als Auftrag zurückgegeben. Andernfalls wird sie 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
Accept pipeline input:False
Accept wildcard characters:False

-Port

Gibt den Netzwerkport des Remotecomputers an, der zum Erneuten Herstellen einer Verbindung mit der Sitzung verwendet wird. Um eine Verbindung mit einem Remotecomputer herzustellen, muss sie auf den Port lauschen, den die Verbindung verwendet. Die Standardports sind 5985, der WinRM-Port für HTTP und 5986, die der WinRM-Port für HTTPS ist.

Bevor Sie einen alternativen Port verwenden, müssen Sie den WinRM-Listener auf dem Remotecomputer so konfigurieren, dass er auf diesem Port lauscht. Um den Listener zu konfigurieren, geben Sie die folgenden beiden Befehle an der 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 nicht, es sei denn, es ist erforderlich. Der Port, der im Befehl festgelegt ist, gilt für alle Computer oder Sitzungen, auf denen 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
Accept pipeline input:False
Accept wildcard characters:False

-Session

Gibt die getrennte Sitzung an. Geben Sie eine Variable ein, die die PSSession oder einen Befehl enthält, der die PSSession erstellt oder abruft, z. B. einen Get-PSSession Befehl.

Type:PSSession
Position:0
Default value:None
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 mithilfe des New-PSSessionOption Cmdlets 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, wenn sie festgelegt ist. 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 Einstellungsvariable und in der Sitzungskonfiguration festgelegt sind. Sie haben jedoch keine Vorrang vor Maximalwerten, Kontingenten oder Grenzwerten, die in der Sitzungskonfiguration festgelegt sind.

Eine Beschreibung der Sitzungsoptionen, die die Standardwerte enthalten, finden Sie unter New-PSSessionOption. Informationen zur $PSSessionOption Einstellungsvariable finden Sie unter about_Preference_Variables. Weitere Informationen zu Sitzungskonfigurationen finden Sie unter about_Session_Configurations.

Type:PSSessionOption
Position:Named
Default value:None
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 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 und SSL 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: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
Accept pipeline input:False
Accept wildcard characters:False

Eingaben

PSSession

Sie können Sitzungsobjekte an dieses Cmdlet weiterleiten, z. B. Objekte, die vom Get-PSSession Cmdlet zurückgegeben werden.

Int32

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

Guid

Sie können die Instanz-IDs von Sitzungen dieses Cmdlets 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 Der Standardwert des OutTarget-Parameters Job ist, Receive-PSSession gibt ein Auftragsobjekt zurück. Andernfalls werden Objekte zurückgeben, die diese Befehlsergebnisse darstellen.

Hinweise

Dieses Cmdlet ist nur auf Windows-Plattformen verfügbar.

Receive-PSSession ruft nur Ergebnisse von Sitzungen ab, die getrennt wurden. Nur Sitzungen, die mit Computern verbunden oder beendet werden, die PowerShell 3.0 oder höher ausführen, können getrennt und erneut verbunden werden.

Wenn die Befehle, die in der getrennten Sitzung ausgeführt wurden, keine Ergebnisse generiert haben oder die Ergebnisse bereits an eine andere Sitzung zurückgegeben wurden, Receive-PSSession generiert keine Ausgabe.

Der Ausgabepuffermodus einer Sitzung bestimmt, wie Befehle in der Sitzungsausgabe verwaltet werden, wenn die Sitzung getrennt wird. Wenn der Wert der Option "OutputBufferingMode " der Sitzung "Drop" lautet und der Ausgabepuffer vollständig ist, beginnt der Befehl, die Ausgabe zu löschen. Receive-PSSession Diese Ausgabe kann nicht wiederhergestellt werden. Weitere Informationen zur Option "Ausgabepuffermodus" finden Sie in den Hilfeartikeln für die Cmdlets New-PSSessionOption und New-PSTransportOption .

Sie können den Leerlaufwert einer PSSession nicht ändern, wenn Sie eine Verbindung mit der PSSession herstellen oder Ergebnisse erhalten. Der SessionOption-Parameter verwendet Receive-PSSession ein SessionOption-Objekt , das einen IdleTimeout-Wert aufweist. Der IdleTimeout-Wert des SessionOption-Objekts und der IdleTimeout-Wert der $PSSessionOption Variable werden jedoch ignoriert, wenn sie eine Verbindung mit einer PSSession herstellen oder Ergebnisse empfangen.

  • Sie können das Leerlauf-Timeout einer PSSession festlegen und ändern, wenn Sie die PSSession erstellen, indem Sie die New-PSSessionPSSession verwenden oder Invoke-Command Cmdlets verwenden und wenn Sie die Verbindung mit der PSSession trennen.
  • Die IdleTimeout-Eigenschaft eines PSSession-Objekts ist wichtig, um getrennte Sitzungen zu trennen, da ermittelt wird, wie lange eine getrennte Sitzung auf dem Remotecomputer beibehalten 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 starten, indem Sie den AsJob-Parameter des Invoke-Command Cmdlets verwenden, wird das Auftragsobjekt in der aktuellen Sitzung erstellt, auch wenn 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 alle Ergebnisse, die an ihn zurückgegeben wurden, aber keine neuen Ergebnisse aus dem Auftrag in der getrennten Sitzung erhalten.

Wenn ein anderer Client eine Verbindung mit der Sitzung herstellt, die den ausgeführten Auftrag enthält, sind die Ergebnisse, die an das ursprüngliche Auftragsobjekt in der ursprünglichen Sitzung übermittelt wurden, nicht in der neu verbundenen Sitzung verfügbar. Nur Ergebnisse, die nicht an das ursprüngliche Auftragsobjekt übermittelt wurden, sind in der neu verbundenen Sitzung verfügbar.

Wenn Sie ein Skript in einer Sitzung starten und dann von der Sitzung trennen, werden alle Ergebnisse, die das Skript an die Sitzung übermittelt, bevor die Trennung nicht für einen anderen Client verfügbar ist, der eine Verbindung mit der Sitzung herstellt.

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 den Datenverlust auch verhindern, indem Sie das Invoke-Command Cmdlet 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 Connect-PSSession Cmdlet, um eine Verbindung mit der Sitzung herzustellen, und verwenden Sie dann das Invoke-Command Cmdlet, um einen Receive-Job Befehl in der Sitzung auszuführen.

Wenn eine Sitzung, die einen ausgeführten Auftrag enthält, getrennt und dann erneut verbunden wird, wird das ursprüngliche Auftragsobjekt nur wiederverwendet, wenn der Auftrag getrennt und mit derselben Sitzung verbunden ist, und der Befehl zum erneuten Verbinden gibt keinen neuen Auftragsnamen an. Wenn die Sitzung erneut mit einer anderen Clientsitzung verbunden ist oder ein neuer Auftragsname angegeben wird, erstellt PowerShell ein neues Auftragsobjekt für die neue Sitzung.

Wenn Sie eine PSSession trennen, wird der Sitzungsstatus getrennt und die Verfügbarkeit ist "None".

  • Der Wert der State Eigenschaft bezieht sich auf die aktuelle Sitzung. Ein Wert von "Getrennt" bedeutet, dass die PSSession nicht mit der aktuellen Sitzung verbunden ist. Es bedeutet jedoch nicht, dass die PSSession von allen Sitzungen getrennt wird. 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. Ein Wert von Gebucht 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.
  • Weitere Informationen zu den Werten der Verfügbarkeitseigenschaft von Sitzungen finden Sie unter RunspaceAvailability.