Receive-PSSession
Ruft 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 cmdlet Receive-PSSession
ruft die Ergebnisse von Befehlen ab, die in 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, wenn die Sitzung getrennt wurde. Wenn die Sitzung weiterhin getrennt ist, stellt Receive-PSSession
eine Verbindung mit der Sitzung herstellt, alle angehaltenen Befehle fort, und ruft die Ergebnisse der Befehle ab, die in der Sitzung ausgeführt werden.
Dieses Cmdlet wurde in PowerShell 3.0 eingeführt.
Sie können zusätzlich oder anstelle eines Receive-PSSession
Befehls eine Connect-PSSession
verwenden.
Receive-PSSession
können eine Verbindung zu jeder getrennten oder erneuten Verbindung herstellen, die in anderen Sitzungen oder auf anderen Computern gestartet wurde.
Receive-PSSession
funktioniert mit PSSessions-, die absichtlich mit dem Cmdlet Disconnect-PSSession
oder dem parameter Invoke-Command
InDisconnectedSession getrennt wurden. Oder nicht versehentlich durch eine Netzwerkunterbrechung getrennt.
Wenn Sie das Cmdlet Receive-PSSession
verwenden, um eine Verbindung mit einer Sitzung herzustellen, in der keine Befehle ausgeführt oder angehalten werden, stellt Receive-PSSession
eine Verbindung mit der Sitzung her, gibt jedoch keine Ausgabe oder Fehler zurück.
Weitere Informationen zum Feature "Getrennte Sitzungen" finden Sie unter about_Remote_Disconnected_Sessions.
Einige Beispiele verwenden splatting, um die Zeilenlänge zu reduzieren 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
Die Receive-PSSession
gibt den Remotecomputer mit dem parameter ComputerName an. Der parameter Name identifiziert die ITTask-Sitzung auf dem Server01-Computer. Das Beispiel ruft die Ergebnisse von Befehlen ab, die in der ITTask-Sitzung ausgeführt wurden.
Da der Befehl nicht den OutTarget Parameter verwendet, werden die Ergebnisse in der Befehlszeile angezeigt.
Beispiel 2: Abrufen von Ergebnissen aller Befehle bei getrennten Sitzungen
In diesem Beispiel werden die Ergebnisse aller Befehle, die in allen getrennten Sitzungen auf zwei Remotecomputern ausgeführt werden, angezeigt.
Wenn eine Sitzung nicht getrennt wurde oder keine Befehle ausgeführt wird, stellt Receive-PSSession
keine Verbindung mit der Sitzung her und gibt keine Ausgabe oder Fehler zurück.
Get-PSSession -ComputerName Server01, Server02 | Receive-PSSession
Get-PSSession
verwendet den Parameter ComputerName, um die Remotecomputer anzugeben. Die Objekte werden an Receive-PSSession
an die Pipeline gesendet.
Beispiel 3: Abrufen der Ergebnisse eines Skripts, das in einer Sitzung ausgeführt wird
In diesem Beispiel wird das Cmdlet Receive-PSSession
verwendet, um die Ergebnisse eines Skripts abzurufen, das in der Sitzung eines Remotecomputers 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 Parameter, um die getrennte Sitzung zu identifizieren.
Er verwendet den OutTarget-Parameter mit dem Wert "Job", um Receive-PSSession
zu leiten, um die Ergebnisse als Auftrag zurückzugeben. Der parameter JobName gibt einen Namen für den Auftrag in der erneuten Verbindung an.
Der parameter Credential führt den befehl Receive-PSSession
mithilfe der Berechtigungen eines Domänenadministrators aus.
Die Ausgabe zeigt, dass Receive-PSSession
die Ergebnisse als Auftrag in der aktuellen Sitzung zurückgegeben haben. Verwenden Sie zum Abrufen der Auftragsergebnisse einen befehl Receive-Job
Beispiel 4: Abrufen von Ergebnissen nach einem Netzwerkausfall
In diesem Beispiel wird das Cmdlet Receive-PSSession
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 erneut zu verbinden, und gibt den Aufwand nur dann auf, 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 cmdlet New-PSSession
erstellt eine Sitzung auf dem Server01-Computer und speichert die Sitzung in der $s
Variablen. Die variable $s
zeigt an, dass der Status 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 cmdlet Invoke-Command
führt ein Skript in der Sitzung in der variablen $s
aus. Das Skript beginnt mit der Ausführung und Rückgabe von Daten, aber ein Netzwerkausfall tritt auf, der die Sitzung unterbricht. 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 State gibt an, dass die verbindung der AD Sitzung getrennt ist. Der Verfügbarkeit Wert "None" gibt an, dass die Sitzung nicht mit Clientsitzungen verbunden ist.
Das Cmdlet Receive-PSSession
stellt eine erneute Verbindung mit der AD--Sitzung her und ruft die Ergebnisse des Skripts ab, das in der Sitzung ausgeführt wurde. Der Befehl verwendet den parameter OutTarget, um die Ergebnisse in einem Auftrag namens ADJobanzufordern. Der Befehl gibt ein Auftragsobjekt zurück, und die Ausgabe gibt an, dass das Skript noch ausgeführt wird.
Das cmdlet Get-PSSession
wird verwendet, um den Auftragsstatus zu überprüfen. Die Ausgabe bestätigt, dass das cmdlet Receive-PSSession
erneut mit der AD Sitzung verbunden wurde, die jetzt geöffnet und für Befehle verfügbar ist. Und das Skript hat die Ausführung fortgesetzt und erhält die Skriptergebnisse.
Beispiel 5: Erneute Verbindung mit getrennten Sitzungen
In diesem Beispiel wird das Cmdlet Receive-PSSession
verwendet, um eine erneute Verbindung mit Sitzungen herzustellen, die absichtlich getrennt wurden, und die Ergebnisse von Aufträgen abzurufen, 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 Cmdlet Invoke-Command
führt ein Skript auf drei Remotecomputern aus. Da das Skript Daten aus mehreren Datenbanken sammelt und zusammenfasst, dauert es häufig eine längere Zeit bis zum Abschluss des Skripts. Der Befehl verwendet den parameter InDisconnectedSession, der die Skripts startet und dann die Sitzungen sofort trennt. Der parameter SessionOption erweitert den IdleTimeout Wert der getrennten Sitzung. Getrennte Sitzungen werden ab dem Moment, an dem sie getrennt sind, als im Leerlauf betrachtet. Es ist wichtig, das Leerlauftimeout für lange genug festzulegen, damit die Befehle abgeschlossen werden können, und Sie können die Verbindung zur Sitzung erneut herstellen. Sie können die IdleTimeout- nur festlegen, wenn Sie die PSSession- erstellen und sie nur ändern, wenn Sie die Verbindung damit 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 setzt der Benutzer Windows fort, startet PowerShell und verwendet Get-PSSession
, um die Sitzungen abzurufen, in denen die Skripts ausgeführt wurden. Der Befehl identifiziert die Sitzungen anhand des Computernamens, des Sitzungsnamens und des Namens der Sitzungskonfiguration und speichert die Sitzungen in der variablen $s
. Der Wert der $s
Variablen wird angezeigt und zeigt an, dass die Sitzungen getrennt sind, aber nicht ausgelastet sind.
Das Cmdlet Receive-PSSession
stellt eine Verbindung mit den Sitzungen in der $s
Variablen und ruft deren Ergebnisse ab.
Der Befehl speichert die Ergebnisse in der variablen $Results
. Die $s
Variable wird angezeigt und zeigt an, dass die Sitzungen verbunden sind und für Befehle verfügbar sind.
Das Skript führt zur $Results
Variablen wird in der PowerShell-Konsole angezeigt. Wenn eines 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
Dieses Beispiel zeigt, 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 Cmdlet New-PSSession
erstellt die Testsitzung auf dem Server01-Computer. Der Befehl speichert die Sitzung in der variablen $s
.
Das cmdlet Invoke-Command
führt einen Befehl in der Sitzung in der variablen $s
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 variablen $j
gespeichert ist. Die variable $j
zeigt das Auftragsobjekt an.
Das Sitzungsobjekt in der $s
Variablen wird an Disconnect-PSSession
gesendet, und die Sitzung wird getrennt.
Die $j
Variable wird angezeigt und zeigt den Effekt der Trennung des Auftragsobjekts in der $j
Variablen an. Der Auftragsstatus ist jetzt getrennt.
Die Receive-Job
wird auf dem Auftrag in der variablen $j
ausgeführt. Die Ausgabe zeigt, dass der Auftrag vor der Sitzung die Ausgabe zurückgibt und der Auftrag getrennt wurde.
Das cmdlet Connect-PSSession
wird in derselben Clientsitzung ausgeführt. Der Befehl stellt eine erneute Verbindung mit der Testsitzung auf dem Server01-Computer her und speichert die Sitzung in der variablen $s2
.
Das Cmdlet Receive-PSSession
ruft die Ergebnisse des Auftrags ab, der in der Sitzung ausgeführt wurde. Da der Befehl in derselben Sitzung ausgeführt wird, gibt Receive-PSSession
die Ergebnisse standardmäßig als Auftrag zurück und verwendet dasselbe Auftragsobjekt wieder. Der Befehl speichert den Auftrag in der variablen $j2
. Das Cmdlet Receive-Job
ruft die Ergebnisse des Auftrags in der variablen $j
ab.
Parameter
-AllowRedirection
Gibt an, dass dieses Cmdlet die Umleitung dieser Verbindung zu einem alternativen URI (Uniform Resource Identifier) zulässt.
Wenn Sie den parameter ConnectionURI verwenden, kann das Remoteziel eine Anweisung zurückgeben, um zu einem anderen URI umzuleiten. Standardmäßig leitet PowerShell keine Verbindungen um, Sie können diesen Parameter jedoch verwenden, um die Verbindung umzuleiten.
Sie können auch einschränken, wie oft die Verbindung umgeleitet wird, indem Sie den MaximumConnectionRedirectionCount Sitzungsoptionswert ändern. Verwenden Sie den MaximumRedirection Parameter des Cmdlets New-PSSessionOption
, oder legen Sie die MaximumConnectionRedirectionCount- eigenschaft der $PSSessionOption
Einstellungsvariable fest. Der Standardwert ist 5.
Typ: | SwitchParameter |
Position: | Named |
Standardwert: | False |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-ApplicationName
Gibt eine Anwendung an. Dieses Cmdlet verbindet sich nur mit 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 zum Auswählen und Filtern von Sitzungen verwendet. Die Anwendung, die von der Sitzung verwendet wird, wird nicht geändert.
Typ: | String |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | True |
Platzhalterzeichen akzeptieren: | False |
-Authentication
Gibt den Mechanismus an, mit dem die Benutzeranmeldeinformationen im Befehl authentifiziert werden, um die Verbindung mit einer getrennten Sitzung wiederherzustellen. Die zulässigen Werte für diesen Parameter sind:
- Vorgabe
- Grundlegend
- Credssp
- Verdauen
- Kerberos
- Verhandeln
- NegotiateWithImplicitCredential
Der Standardwert ist "Default".
Weitere Informationen zu den Werten dieses Parameters finden Sie unter AuthenticationMechanism Enumeration.
Vorsicht
Credential Security Support Provider (CredSSP)-Authentifizierung, bei der die Benutzeranmeldeinformationen an einen Remotecomputer übergeben werden, der authentifiziert werden soll, ist für Befehle konzipiert, die eine Authentifizierung für mehrere Ressourcen erfordern, z. B. den Zugriff auf eine Remotenetzwerkfreigabe. Dieser Mechanismus erhöht das Sicherheitsrisiko des Remotevorgangs. Wenn der Remotecomputer kompromittiert ist, können die an ihn übergebenen Anmeldeinformationen zum Steuern der Netzwerksitzung verwendet werden.
Typ: | AuthenticationMechanism |
Zulässige Werte: | Default, Basic, Negotiate, NegotiateWithImplicitCredential, Credssp, Digest, Kerberos |
Position: | Named |
Standardwert: | Default |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-CertificateThumbprint
Gibt das zertifikat für den digitalen öffentlichen Schlüssel (X509) eines Benutzerkontos an, das über die Berechtigung zum Herstellen einer Verbindung mit der getrennten Sitzung verfügt. Geben Sie den Zertifikatfingerabdruck des Zertifikats ein.
Zertifikate werden in der zertifikatbasierten Clientauthentifizierung verwendet. Zertifikate können nur lokalen Benutzerkonten zugeordnet werden und funktionieren nicht mit Domänenkonten.
Verwenden Sie zum Abrufen eines Zertifikatfingerabdrucks einen Get-Item
- oder Get-ChildItem
-Befehl auf dem PowerShell-Cert:
Laufwerk.
Typ: | String |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | 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. Der Standardwert ist der lokale Computer.
Geben Sie den NetBIOS-Namen, eine IP-Adresse oder einen vollqualifizierten Domänennamen (FQDN) eines Computers ein.
Wildcardzeichen sind nicht zulässig. Um den lokalen Computer anzugeben, geben Sie den Computernamen, einen Punkt (.
), $Env:COMPUTERNAME
oder Localhost ein.
Typ: | String |
Aliase: | Cn |
Position: | 0 |
Standardwert: | None |
Erforderlich: | True |
Pipelineeingabe akzeptieren: | True |
Platzhalterzeichen akzeptieren: | False |
-ConfigurationName
Gibt den Namen einer Sitzungskonfiguration an. Dieses Cmdlet verbindet sich nur mit 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 wird in der ConfigurationName Eigenschaft der Sitzung gespeichert.
Der Wert des Parameters wird zum Auswählen und Filtern von Sitzungen verwendet. Die sitzungskonfiguration, die von der Sitzung verwendet wird, wird nicht geändert.
Weitere Informationen zu Sitzungskonfigurationen finden Sie unter about_Session_Configurations.
Typ: | String |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | True |
Platzhalterzeichen akzeptieren: | False |
-Confirm
Fordert Sie vor dem Ausführen des Cmdlets zur Bestätigung auf.
Typ: | SwitchParameter |
Aliase: | cf |
Position: | Named |
Standardwert: | False |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | 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 vollqualifizierter sein. Das Format der Zeichenfolge lautet wie folgt:
<Transport>://<ComputerName>:<Port>/<ApplicationName>
Der Standardwert lautet wie folgt:
http://localhost:5985/WSMAN
Wenn Sie keinen Verbindungs-URI angeben, können Sie die parameter UseSSL, ComputerName, Portund ApplicationName Parameter verwenden, um die Verbindungs-URI-Werte anzugeben.
Gültige Werte für das segment Transport 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.
Typ: | Uri |
Aliase: | URI, CU |
Position: | 0 |
Standardwert: | http://localhost:5985/WSMAN |
Erforderlich: | True |
Pipelineeingabe akzeptieren: | True |
Platzhalterzeichen akzeptieren: | False |
-Credential
Gibt ein Benutzerkonto an, das über die Berechtigung zum Herstellen einer Verbindung mit der getrennten Sitzung verfügt. Die Standardeinstellung ist der aktuelle Benutzer.
Geben Sie einen Benutzernamen ein, z. B. User01 oder Domain01\User01, oder geben Sie ein PSCredential-Objekt ein, das vom cmdlet Get-Credential
generiert wird. 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.
Anmerkung
Weitere Informationen zu SecureString Datenschutz finden Sie unter Wie sicher ist SecureString?.
Typ: | PSCredential |
Position: | Named |
Standardwert: | Current user |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-Id
Gibt die ID einer getrennten Sitzung an. Der parameter ID funktioniert nur, wenn die getrennte Sitzung zuvor mit der aktuellen Sitzung verbunden war.
Dieser Parameter ist gültig, aber nicht effektiv, wenn die Sitzung auf dem lokalen Computer gespeichert wird, aber nicht mit der aktuellen Sitzung verbunden war.
Typ: | Int32 |
Position: | 0 |
Standardwert: | None |
Erforderlich: | True |
Pipelineeingabe akzeptieren: | True |
Platzhalterzeichen akzeptieren: | 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 eigenschaft InstanceId der PSSessiongespeichert.
Typ: | Guid |
Position: | Named |
Standardwert: | None |
Erforderlich: | True |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-JobName
Gibt einen Anzeigenamen für den Auftrag an, der zurückgegeben Receive-PSSession
.
Receive-PSSession
gibt einen Auftrag zurück, wenn der Wert des OutTarget Parameter 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 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 PowerShell ein neues Auftragsobjekt. Sie verwendet einen Standardnamen, aber Sie können diesen Parameter verwenden, um den Namen zu ändern.
Wenn der Standardwert oder der explizite Wert des OutTarget Parameter nicht Job ist, ist der Befehl erfolgreich, der JobName Parameter hat jedoch keine Auswirkung.
Typ: | String |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-Name
Gibt den Anzeigenamen der getrennten Sitzung an.
Typ: | String |
Position: | Named |
Standardwert: | None |
Erforderlich: | True |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-OutTarget
Bestimmt, wie die Sitzungsergebnisse zurückgegeben werden. Die zulässigen Werte für diesen Parameter sind:
- Job. Gibt die Ergebnisse asynchron in einem Auftragsobjekt zurück. Sie können den parameter JobName verwenden, um einen Namen oder neuen Namen für den Auftrag anzugeben.
- Host-. Gibt die Ergebnisse an die Befehlszeile (synchron) zurück. Wenn der Befehl fortgesetzt wird oder die Ergebnisse aus einer großen Anzahl von Objekten bestehen, wird die Antwort möglicherweise verzögert.
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 OutTarget Parameter 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 zurückgegebene Objekte in der Befehlszeile ohne Verzögerung an, dieses Verhalten kann jedoch variieren.
Typ: | OutTarget |
Zulässige Werte: | Default, Host, Job |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | 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 dem von der Verbindung genutzten Port lauschen. Die Standardports sind 5985, der WinRM-Port für HTTP und 5986, der WinRM-Port für HTTPS.
Bevor Sie einen alternativen Port verwenden, müssen Sie den WinRM-Listener auf dem Remotecomputer so konfigurieren, dass er auf diesen Port lauscht. Geben Sie zum Konfigurieren des Listeners 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 parameter Port nur, wenn dies erforderlich ist. Der im Befehl festgelegte Port 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.
Typ: | Int32 |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-Session
Gibt die getrennte Sitzung an. Geben Sie eine Variable ein, die den PSSession- oder einen Befehl enthält, der die PSSession-erstellt oder abruft, z. B. einen Get-PSSession
-Befehl.
Typ: | PSSession |
Position: | 0 |
Standardwert: | None |
Erforderlich: | True |
Pipelineeingabe akzeptieren: | True |
Platzhalterzeichen akzeptieren: | False |
-SessionOption
Gibt erweiterte Optionen für die Sitzung an. Geben Sie ein SessionOption--Objekt ein, z. B. ein Objekt, das Sie mithilfe des Cmdlets New-PSSessionOption
erstellen, oder eine Hashtabelle, in der es sich bei den Schlüsseln um Sitzungsoptionsnamen und die Werte um Sitzungsoptionswerte handelt.
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 einstellungsvariablen $PSSessionOption
und in der Sitzungskonfiguration festgelegt sind. Sie haben jedoch keine Vorrang vor maximal festgelegten Werten, Kontingenten oder Grenzwerten in der Sitzungskonfiguration.
Eine Beschreibung der Sitzungsoptionen, die die Standardwerte enthalten, 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.
Typ: | PSSessionOption |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | 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 über das Netzwerk übertragenen PowerShell-Inhalte. UseSSL- ist ein zusätzlicher Schutz, der die Daten über eine HTTPS-Verbindung statt über eine HTTP-Verbindung sendet.
Wenn Sie diesen Parameter verwenden und SSL für den Für den Befehl verwendeten Port nicht verfügbar ist, schlägt der Befehl fehl.
Typ: | SwitchParameter |
Position: | Named |
Standardwert: | False |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-WhatIf
Zeigt, was passiert, wenn das Cmdlet ausgeführt wird. Das Cmdlet wird nicht ausgeführt.
Typ: | SwitchParameter |
Aliase: | wi |
Position: | Named |
Standardwert: | False |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
Eingaben
Sie können Sitzungsobjekte an dieses Cmdlet weiterleiten, z. B. objekte, die vom Cmdlet Get-PSSession
zurückgegeben werden.
Sie können Sitzungs-IDs an dieses Cmdlet weiterleiten.
Sie können die Instanz-IDs von Sitzungen dieses Cmdlets weiterleiten.
Sie können Sitzungsnamen an dieses Cmdlet weiterleiten.
Ausgaben
Wenn der Wert oder Standardwert des OutTarget Parameter Job
ist, gibt Receive-PSSession
ein Auftragsobjekt zurück.
Dieses Cmdlet gibt die Ergebnisse von Befehlen zurück, die in der getrennten Sitzung ausgeführt wurden, falls vorhanden.
Hinweise
PowerShell enthält die folgenden Aliase für Receive-PSSession
:
- Alle Plattformen:
rcsn
Dieses Cmdlet ist nur auf Windows-Plattformen verfügbar.
Receive-PSSession
ergebnisse nur von Sitzungen erhalten, die getrennt wurden. Nur Sitzungen, die mit PowerShell 3.0- oder höher-Versionen verbunden oder beendet werden, können getrennt und erneut verbunden werden.
Wenn die Befehle, die in der getrennten Sitzung ausgeführt wurden, keine Ergebnisse generiert oder die Ergebnisse bereits an eine andere Sitzung zurückgegeben wurden, generiert Receive-PSSession
keine Ausgabe.
Der Ausgabepuffermodus einer Sitzung bestimmt, wie Befehle in der Sitzung die Ausgabe verwalten, wenn die Sitzung getrennt wird. Wenn der Wert der OutputBufferingMode Option der Sitzung drop ist und der Ausgabepuffer voll ist, beginnt der Befehl mit dem Löschen der Ausgabe.
Receive-PSSession
kann diese Ausgabe nicht wiederherstellen. Weitere Informationen zur Ausgabepuffermodusoption finden Sie in den Hilfeartikeln für die New-PSSessionOption und New-PSTransportOption Cmdlets.
Sie können den Leerlauftimeoutwert eines PSSession- nicht ändern, wenn Sie eine Verbindung mit der PSSession herstellen oder Ergebnisse erhalten. Der SessionOption Parameter von Receive-PSSession
akzeptiert ein SessionOption--Objekt, das einen IdleTimeout- Wert aufweist. Der IdleTimeout- Wert des SessionOption-Objekts und der IdleTimeout Wert der $PSSessionOption
Variablen werden jedoch ignoriert, wenn eine Verbindung mit einem PSSession- oder Empfangen von Ergebnissen hergestellt wird.
- Sie können das Leerlauftimeout eines PSSession- festlegen und ändern, wenn Sie das PSSession-erstellen, indem Sie die cmdlets
New-PSSession
oderInvoke-Command
verwenden und die Verbindung mit dem PSSessiontrennen. - Die IdleTimeout- Eigenschaft eines PSSession- ist für getrennte Sitzungen wichtig, da ermittelt wird, wie lange eine getrennte Sitzung auf dem Remotecomputer verwaltet wird. Getrennte Sitzungen werden als im Leerlauf betrachtet, sobald sie getrennt sind, auch wenn Befehle in der getrennten Sitzung ausgeführt werden.
Wenn Sie einen Auftrag in einer Remotesitzung starten, indem Sie den AsJob Parameter des Cmdlets Invoke-Command
verwenden, 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 alle Ergebnisse, die an ihn zurückgegeben wurden, aber keine neuen Ergebnisse vom 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, in der neu verbundenen Sitzung nicht verfügbar. Nur Ergebnisse, die nicht an das ursprüngliche Auftragsobjekt übermittelt wurden, sind in der erneut verbundenen Sitzung verfügbar.
Wenn Sie ein Skript in einer Sitzung starten und dann die Verbindung mit der Sitzung trennen, stehen alle Ergebnisse, die das Skript an die Sitzung übermittelt, bevor die Verbindung nicht für einen anderen Client verfügbar ist, der eine Verbindung mit der Sitzung herstellt.
Verwenden Sie den InDisconnectedSession Parameter des Cmdlets Invoke-Command
, um Datenverluste in Sitzungen zu verhindern, die Sie trennen möchten. Da dieser Parameter verhindert, dass Ergebnisse an die aktuelle Sitzung zurückgegeben werden, sind alle Ergebnisse verfügbar, wenn die Sitzung erneut verbunden wird.
Sie können Datenverlust auch 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 Cmdlet Receive-PSSession
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 ausgeführten Auftrag enthält, getrennt und dann erneut verbunden wird, wird das ursprüngliche Auftragsobjekt nur wiederverwendet, wenn der Auftrag getrennt und erneut mit derselben Sitzung verbunden ist, und der Befehl zum erneuten Verbinden keinen neuen Auftragsnamen angibt. 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 eigenschaft State ist relativ zur aktuellen Sitzung. Der Wert "Disconnected" bedeutet, dass die PSSession- nicht mit der aktuellen Sitzung verbunden ist. Es bedeutet jedoch nicht, dass die PSSession- von allen Sitzungen getrennt ist. Möglicherweise ist sie mit einer anderen Sitzung verbunden. Um festzustellen, ob Sie eine Verbindung mit der Sitzung herstellen oder erneut herstellen können, verwenden Sie die Eigenschaft Availability.
- Ein Availability Wert "None" gibt an, dass Sie eine Verbindung mit der Sitzung herstellen können. Ein Wert von Beschäftigt 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 eigenschaft State Sitzungen finden Sie unter RunspaceState.
- Weitere Informationen zu den Werten der Availability-Eigenschaft von Sitzungen finden Sie unter RunspaceAvailability.