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 der Befehle ab, Receive-PSSession
die ausgeführt wurden, als die Sitzung getrennt wurde. Wenn die Sitzung noch getrennt ist, Receive-PSSession
stellt eine Verbindung mit der Sitzung her, setzt 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 Receive-PSSession
zu oder anstelle eines Connect-PSSession
Befehls verwenden.
Receive-PSSession
kann eine Verbindung mit jeder getrennten oder erneut verbundenen Sitzung herstellen, die in anderen Sitzungen oder auf anderen Computern gestartet wurde.
Receive-PSSession
funktioniert für PSSessions , die absichtlich mithilfe des Cmdlets oder des Disconnect-PSSession
Invoke-Command
InDisconnectedSession-Parameters getrennt wurden. Oder unbeabsichtigt durch eine Netzwerkunterbrechung getrennt.
Wenn Sie das Receive-PSSession
Cmdlet verwenden, um eine Verbindung mit einer Sitzung herzustellen, in der keine Befehle ausgeführt oder angehalten werden, Receive-PSSession
stellt 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 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
Gibt Receive-PSSession
den Remotecomputer mit dem ComputerName-Parameter an. Der Name-Parameter 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 der Ergebnisse aller Befehle für getrennte Sitzungen
In diesem Beispiel werden die Ergebnisse aller Befehle abgerufen, die in allen getrennten Sitzungen auf zwei Remotecomputern ausgeführt werden.
Wenn eine Sitzung nicht getrennt wurde oder keine Befehle ausführt, Receive-PSSession
stellt 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 ComputerName-Parameter , um die Remotecomputer anzugeben. Die -Objekte werden in der Pipeline an Receive-PSSession
gesendet.
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 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, um die getrennte Sitzung zu identifizieren.
Es verwendet den OutTarget-Parameter mit dem Wert Job, um die Receive-PSSession
Ergebnisse als Auftrag zurückzugeben. Der Parameter JobName gibt einen Namen für den Auftrag in der erneut verbundenen Sitzung an.
Der Parameter Credential führt den Receive-PSSession
Befehl mit den 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 wiederherzustellen, 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 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 Status Geöffnet 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 auf dem Server01-Computer noch vorhanden ist. Der Status gibt an, dass die AD-Sitzung getrennt ist. Der Verfügbarkeitswert von None gibt an, dass die Sitzung nicht mit Clientsitzungen verbunden ist.
Das Receive-PSSession
Cmdlet stellt wieder 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 mit dem Namen ADJob anzufordern. Der Befehl gibt ein Auftragsobjekt zurück, und die Ausgabe gibt an, dass das Skript noch ausgeführt wird.
Das Get-PSSession
Cmdlet wird verwendet, um den Auftragsstatus zu überprüfen. Die Ausgabe bestätigt, dass das Receive-PSSession
Cmdlet wieder eine Verbindung mit der AD-Sitzung hergestellt hat, die jetzt geöffnet und für Befehle verfügbar ist. Außerdem hat das Skript die Ausführung fortgesetzt und erhält die Skriptergebnisse.
Beispiel 5: Erneutes Herstellen einer Verbindung mit getrennten Sitzungen
In diesem Beispiel wird das Receive-PSSession
Cmdlet verwendet, um eine Verbindung mit Sitzungen herzustellen, die absichtlich getrennt wurden, und um 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 Invoke-Command
Cmdlet führt ein Skript auf drei Remotecomputern aus. Da das Skript Daten aus mehreren Datenbanken sammelt und zusammenfasst, dauert es häufig länger, bis das Skript abgeschlossen ist. Der Befehl verwendet den Parameter InDisconnectedSession , 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 im Leerlauf betrachtet. Es ist wichtig, das Leerlauftimeout so lange festzulegen, dass die Befehle abgeschlossen werden können und Sie die Verbindung mit der Sitzung wiederherstellen können. Sie können das IdleTimeout nur festlegen, wenn Sie die PSSession erstellen, und sie nur ändern, wenn Sie die Verbindung davon trennen. Sie können den IdleTimeout-Wert nicht ändern, wenn Sie eine Verbindung mit einer PSSession herstellen oder deren 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 $s
Variablen. Der Wert der $s
Variablen wird angezeigt und zeigt an, dass die Sitzungen getrennt, aber nicht ausgelastet sind.
Das Receive-PSSession
Cmdlet stellt eine Verbindung mit den Sitzungen in der $s
Variablen her und ruft deren Ergebnisse ab.
Der Befehl speichert die Ergebnisse in der $Results
Variablen. Die $s
Variable wird angezeigt und zeigt an, dass die Sitzungen verbunden sind und für Befehle verfügbar sind.
Die Skriptergebnisse in der $Results
Variablen werden in der PowerShell-Konsole angezeigt. Wenn eines der Ergebnisse unerwartet ist, kann der Benutzer Befehle in den Sitzungen ausführen, um die Grundursache 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 New-PSSession
Cmdlet erstellt die Testsitzung auf dem Computer Server01. 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 erstellt das Auftragsobjekt in der aktuellen Sitzung.
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
Variablen wird von der Pipeline 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 Status des Auftrags ist nun „Getrennt“.
Wird Receive-Job
für den Auftrag in der $j
Variablen ausgeführt. Die Ausgabe zeigt, dass der Auftrag begann, die Ausgabe zurückzugeben, bevor die Sitzung und der Auftrag getrennt wurde.
Das Connect-PSSession
Cmdlet wird in derselben Clientsitzung ausgeführt. Der Befehl stellt wieder 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 dasselbe 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 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 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 New-PSSessionOption
Cmdlets, oder legen Sie die MaximumConnectionRedirectionCount-Eigenschaft der $PSSessionOption
Einstellungsvariablen fest. Der Standardwert ist 5.
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
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. 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 von der Sitzung verwendet wird, wird nicht geändert.
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 Benutzeranmeldeinformationen im Befehl verwendet wird, um die Verbindung mit einer 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 zur Authentifizierung übergeben werden, 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 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 |
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. Zertifikate können nur lokalen Benutzerkonten zugeordnet werden und funktionieren nicht mit Domänenkonten.
Um einen Zertifikatfingerabdruck abzurufen, verwenden Sie einen Get-Item
oder Get-ChildItem
-Befehl auf dem PowerShell-Laufwerk Cert:
.
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 (FQDN) eines Computers ein.
Wildcardzeichen sind nicht zulässig. Geben Sie zum Angeben des lokalen Computers den Computernamen, einen Punkt (.
), $env:COMPUTERNAME
oder localhost ein.
Type: | String |
Aliases: | Cn |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-ConfigurationName
Gibt den Namen einer Sitzungskonfiguration an. Dieses Cmdlet 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:
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 von der Sitzung verwendet wird, wird nicht geändert.
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 verwendet wird, um die Verbindung mit der getrennten Sitzung wiederherzustellen.
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 an einen 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 |
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 vom Get-Credential
Cmdlet generiertes PSCredential-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 Schutz von SecureString-Daten finden Sie unter Wie sicher ist SecureString?.
Type: | PSCredential |
Position: | Named |
Default value: | Current user |
Required: | False |
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 war.
Dieser Parameter ist gültig, aber nicht wirksam, wenn die Sitzung auf dem lokalen Computer gespeichert, aber nicht mit der aktuellen Sitzung verbunden war.
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 zurückgegebenen Receive-PSSession
Auftrag an.
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 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. 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 der Befehl, der in einer 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 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 |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Port
Gibt den Netzwerkport des Remotecomputers an, der verwendet wird, um die Verbindung mit der Sitzung wiederherzustellen. Um eine Verbindung mit einem Remotecomputer herzustellen, muss dieser am Port lauschen, den die Verbindung verwendet. Die Standardports sind 5985, d. h. 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 an diesem 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 Port-Parameter 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.
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, mit dem die PSSession erstellt oder abgerufen wird, 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 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 Einstellungsvariablen $PSSessionOption
und in der Sitzungskonfiguration festgelegt sind. Sie haben jedoch keine Priorität vor maximalen Werten, 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 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 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 auf dem Port, der für den Befehl verwendet wird, nicht verfügbar ist, schlägt der Befehl fehl.
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-WhatIf
Zeigt, was geschieht, wenn das Cmdlet ausgeführt wird. Das Cmdlet wird nicht ausgeführt.
Type: | SwitchParameter |
Aliases: | wi |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Eingaben
Sie können Sitzungsobjekte an dieses Cmdlet übergeben, z. B. objekte, die Get-PSSession
vom Cmdlet zurückgegeben werden.
Sie können Sitzungs-IDs an dieses Cmdlet übergeben.
Sie können die instance-IDs von Sitzungen mit diesem Cmdlet übergeben.
Sie können Sitzungsnamen an dieses Cmdlet übergeben.
Ausgaben
Wenn der Wert oder Standardwert des OutTarget-Parameters ist Job
, Receive-PSSession
gibt 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
ruft nur Ergebnisse von Sitzungen ab, die getrennt wurden. Nur Sitzungen, die mit Computern verbunden sind oder auf denen 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, Receive-PSSession
generiert keine Ausgabe.
Der Ausgabepuffermodus einer Sitzung bestimmt, wie Befehle in der Sitzung die Ausgabe 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 Hilfeartikeln zu den 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 eine Verbindung mit einer PSSession hergestellt wird oder Ergebnisse empfangen werden.
- Sie können das Leerlauftimeout einer PSSession festlegen und ändern, wenn Sie die PSSession erstellen, indem Sie die
New-PSSession
Cmdlets oderInvoke-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 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 mithilfe des AsJob-Parameters des Invoke-Command
Cmdlets 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 alle Ergebnisse, die zurückgegeben wurden, aber keine neuen Ergebnisse vom Auftrag in der getrennten Sitzung.
Wenn ein anderer Client eine Verbindung mit der Sitzung herstellt, die den ausgeführten Auftrag enthält, sind die Ergebnisse, die in der ursprünglichen Sitzung an das ursprüngliche Auftragsobjekt übermittelt wurden, in der neu verbundenen Sitzung nicht 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 die Verbindung mit der Sitzung trennen, sind alle Ergebnisse, die das Skript vor dem Trennen an die Sitzung übermittelt, nicht für einen anderen Client verfügbar, der eine Verbindung mit der Sitzung herstellt.
Verwenden Sie den Parameter InDisconnectedSession des Cmdlets, um Datenverluste in Sitzungen zu verhindern, die Invoke-Command
getrennt werden sollen. 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 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 wieder verbunden wird, wird das ursprüngliche Auftragsobjekt nur wiederverwendet, wenn der Auftrag getrennt und wieder mit derselben Sitzung verbunden wird, und der Befehl zum Erneuten Herstellen der Verbindung keinen neuen Auftragsnamen angibt. Wenn die Sitzung wieder mit einer anderen Clientsitzung verbunden wird oder ein neuer Auftragsname angegeben wird, erstellt 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. Der Wert "Disconnected" bedeutet, 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.
- Weitere Informationen zu den Werten der Availability-Eigenschaft von Sitzungen finden Sie unter RunspaceAvailability.