Receive-PSSession
Resultaten ophalen van opdrachten in niet-verbonden sessies
Syntaxis
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>]
Description
Met de Receive-PSSession
-cmdlet worden de resultaten opgehaald van opdrachten die worden uitgevoerd in PowerShell-sessies (PSSession) die zijn verbroken. Als de sessie momenteel is verbonden, krijgt Receive-PSSession
de resultaten van opdrachten die werden uitgevoerd toen de sessie werd verbroken. Als de verbinding met de sessie nog steeds is verbroken, Receive-PSSession
verbinding maakt met de sessie, hervat u alle opdrachten die zijn onderbroken en worden de resultaten opgehaald van opdrachten die in de sessie worden uitgevoerd.
Deze cmdlet is geïntroduceerd in PowerShell 3.0.
U kunt een Receive-PSSession
naast of in plaats van een Connect-PSSession
opdracht gebruiken.
Receive-PSSession
kan verbinding maken met elke verbroken of opnieuw verbonden sessie die is gestart in andere sessies of op andere computers.
Receive-PSSession
werkt op PSSessions die opzettelijk zijn verbroken met behulp van de Disconnect-PSSession
-cmdlet of de parameter Invoke-Command
InDisconnectedSession. Of onopzettelijk verbroken door een netwerkonderbreking.
Als u de Receive-PSSession
-cmdlet gebruikt om verbinding te maken met een sessie waarin geen opdrachten worden uitgevoerd of onderbroken, maakt Receive-PSSession
verbinding met de sessie, maar retourneert geen uitvoer of fouten.
Zie about_Remote_Disconnected_Sessionsvoor meer informatie over de functie Niet-verbonden sessies.
In sommige voorbeelden wordt splatting gebruikt om de lijnlengte te verminderen en de leesbaarheid te verbeteren. Zie about_Splattingvoor meer informatie.
Voorbeelden
Voorbeeld 1: Verbinding maken met een PSSession
In dit voorbeeld wordt verbinding gemaakt met een sessie op een externe computer en worden de resultaten opgehaald van opdrachten die in een sessie worden uitgevoerd.
Receive-PSSession -ComputerName Server01 -Name ITTask
De Receive-PSSession
geeft de externe computer op met de parameter ComputerName. De parameter Name identificeert de ITTask-sessie op de Server01-computer. In het voorbeeld worden de resultaten opgehaald van opdrachten die werden uitgevoerd in de ITTask-sessie.
Omdat de opdracht de parameter OutTarget niet gebruikt, worden de resultaten weergegeven op de opdrachtregel.
Voorbeeld 2: Resultaten ophalen van alle opdrachten voor niet-verbonden sessies
In dit voorbeeld worden de resultaten opgehaald van alle opdrachten die worden uitgevoerd in alle niet-verbonden sessies op twee externe computers.
Als een sessie niet is verbroken of geen opdrachten uitvoert, maakt Receive-PSSession
geen verbinding met de sessie en retourneert geen uitvoer of fouten.
Get-PSSession -ComputerName Server01, Server02 | Receive-PSSession
Get-PSSession
gebruikt de parameter ComputerName om de externe computers op te geven. De objecten worden naar Receive-PSSession
verzonden.
Voorbeeld 3: De resultaten ophalen van een script dat wordt uitgevoerd in een sessie
In dit voorbeeld wordt de Receive-PSSession
-cmdlet gebruikt om de resultaten op te halen van een script dat werd uitgevoerd in de sessie van een externe computer.
$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
De opdracht maakt gebruik van de parameters ComputerName en Name om de niet-verbonden sessie te identificeren.
Hierbij wordt de parameter OutTarget met de waarde Job gebruikt om Receive-PSSession
om de resultaten als taak te retourneren. De parameter JobName geeft een naam op voor de taak in de opnieuw verbonden sessie.
De parameter Credential voert de opdracht Receive-PSSession
uit met behulp van de machtigingen van een domeinbeheerder.
In de uitvoer ziet u dat Receive-PSSession
de resultaten als een taak in de huidige sessie heeft geretourneerd. Gebruik een Receive-Job
opdracht om de taakresultaten op te halen
Voorbeeld 4: Resultaten ophalen na een netwerkstoring
In dit voorbeeld wordt de cmdlet Receive-PSSession
gebruikt om de resultaten van een taak op te halen nadat een netwerkstoring een sessieverbinding heeft onderbroken. PowerShell probeert de sessie automatisch één keer per seconde opnieuw te verbinden voor de komende vier minuten en de inspanning wordt alleen afgebroken als alle pogingen in het interval van vier minuten mislukken.
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
De New-PSSession
cmdlet maakt een sessie op de Server01-computer en slaat de sessie op in de $s
variabele. De variabele $s
geeft aan dat de status is geopend en dat de beschikbaarheids beschikbaar is. Deze waarden geven aan dat u verbonden bent met de sessie en opdrachten in de sessie kunnen uitvoeren.
De cmdlet Invoke-Command
voert een script uit in de sessie in de $s
variabele. Het script begint met het uitvoeren en retourneren van gegevens, maar er treedt een netwerkstoring op die de sessie onderbreekt. De gebruiker moet de sessie afsluiten en de lokale computer opnieuw opstarten.
Wanneer de computer opnieuw wordt opgestart, start de gebruiker PowerShell en voert de gebruiker een Get-PSSession
opdracht uit om sessies op de Server01-computer op te halen. De uitvoer laat zien dat de AD- sessie nog steeds bestaat op de Server01-computer. De state geeft aan dat de AD- sessie is verbroken. De beschikbaarheid waarde Geen, geeft aan dat de sessie niet is verbonden met clientsessies.
De cmdlet Receive-PSSession
maakt opnieuw verbinding met de AD--sessie en haalt de resultaten op van het script dat in de sessie is uitgevoerd. De opdracht gebruikt de parameter OutTarget om de resultaten aan te vragen in een taak met de naam ADJob. De opdracht retourneert een taakobject en de uitvoer geeft aan dat het script nog steeds wordt uitgevoerd.
De cmdlet Get-PSSession
wordt gebruikt om de taakstatus te controleren. De uitvoer bevestigt dat de Receive-PSSession
cmdlet opnieuw verbinding heeft gemaakt met de AD--sessie, die nu is geopend en beschikbaar is voor opdrachten. En de uitvoering van het script wordt hervat en de scriptresultaten worden opgehaald.
Voorbeeld 5: Opnieuw verbinding maken met verbroken sessies
In dit voorbeeld wordt de cmdlet Receive-PSSession
gebruikt om opnieuw verbinding te maken met sessies die opzettelijk zijn verbroken en de resultaten te verkrijgen van taken die in de sessies werden uitgevoerd.
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
De cmdlet Invoke-Command
voert een script uit op drie externe computers. Omdat het script gegevens uit meerdere databases verzamelt en samenvat, duurt het vaak een langere tijd om het script te voltooien. De opdracht maakt gebruik van de parameter InDisconnectedSession waarmee de scripts worden gestart en de sessies onmiddellijk worden verbroken. De parameter SessionOption breidt de IdleTimeout- waarde van de niet-verbonden sessie uit. Niet-verbonden sessies worden beschouwd als niet-actief vanaf het moment dat de verbinding wordt verbroken. Het is belangrijk om de time-out voor inactiviteit zo lang in te stellen dat de opdrachten kunnen worden voltooid en u opnieuw verbinding kunt maken met de sessie. U kunt de IdleTimeout alleen instellen wanneer u de PSSession- maakt en deze alleen wijzigt wanneer u de verbinding verbreekt. U kunt de IdleTimeout--waarde niet wijzigen wanneer u verbinding maakt met een PSSession- of de resultaten ontvangt. Nadat de opdracht is uitgevoerd, sluit de gebruiker PowerShell af en sluit de computer.
De volgende dag hervat de gebruiker Windows, start PowerShell en gebruikt Get-PSSession
om de sessies op te halen waarin de scripts werden uitgevoerd. De opdracht identificeert de sessies op basis van de computernaam, sessienaam en de naam van de sessieconfiguratie en slaat de sessies op in de $s
variabele. De waarde van de variabele $s
wordt weergegeven en geeft aan dat de sessies zijn verbroken, maar niet bezet zijn.
De Receive-PSSession
cmdlet maakt verbinding met de sessies in de $s
variabele en haalt de resultaten op.
Met de opdracht worden de resultaten opgeslagen in de $Results
variabele. De variabele $s
wordt weergegeven en laat zien dat de sessies zijn verbonden en beschikbaar zijn voor opdrachten.
Het script resulteert in de $Results
variabele wordt weergegeven in de PowerShell-console. Als een van de resultaten onverwacht is, kan de gebruiker opdrachten uitvoeren in de sessies om de hoofdoorzaak te onderzoeken.
Voorbeeld 6: Een taak uitvoeren in een niet-verbonden sessie
In dit voorbeeld ziet u wat er gebeurt met een taak die wordt uitgevoerd in een niet-verbonden sessie.
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
De New-PSSession
cmdlet maakt de testsessie op de Server01-computer. Met de opdracht wordt de sessie opgeslagen in de variabele $s
.
De cmdlet Invoke-Command
voert een opdracht uit in de sessie in de $s
variabele. De opdracht gebruikt de parameter AsJob om de opdracht uit te voeren als een taak en maakt het taakobject in de huidige sessie.
De opdracht retourneert een taakobject dat is opgeslagen in de $j
variabele. De $j
-variabele geeft het taakobject weer.
Het sessieobject in de variabele $s
wordt naar de pijplijn verzonden naar Disconnect-PSSession
en de sessie wordt verbroken.
De $j
variabele wordt weergegeven en toont het effect van het loskoppelen van het taakobject in de $j
variabele. De taakstatus is nu verbroken.
De Receive-Job
wordt uitgevoerd op de taak in de $j
variabele. De uitvoer laat zien dat de taak uitvoer begon te retourneren voordat de sessie en de taak is verbroken.
De Connect-PSSession
cmdlet wordt uitgevoerd in dezelfde clientsessie. De opdracht maakt opnieuw verbinding met de testsessie op de Server01-computer en slaat de sessie op in de variabele $s2
.
De Receive-PSSession
cmdlet haalt de resultaten op van de taak die in de sessie werd uitgevoerd. Omdat de opdracht in dezelfde sessie wordt uitgevoerd, retourneert Receive-PSSession
standaard de resultaten als een taak en wordt hetzelfde taakobject opnieuw gebruikt. Met de opdracht wordt de taak opgeslagen in de variabele $j2
. De cmdlet Receive-Job
haalt de resultaten van de taak op in de $j
variabele.
Parameters
-AllowRedirection
Geeft aan dat deze cmdlet omleiding van deze verbinding met een alternatieve URI (Uniform Resource Identifier) toestaat.
Wanneer u de parameter ConnectionURI gebruikt, kan de externe bestemming een instructie retourneren om om te leiden naar een andere URI. PowerShell leidt standaard geen verbindingen om, maar u kunt deze parameter gebruiken om de verbinding om te leiden.
U kunt ook het aantal keren beperken dat de verbinding wordt omgeleid door de waarde van de MaximumConnectionRedirectionCount sessieoptie te wijzigen. Gebruik de parameter MaximumRedirection van de cmdlet New-PSSessionOption
of stel de eigenschap MaximumConnectionRedirectionCount in van de $PSSessionOption
voorkeursvariabele. De standaardwaarde is 5.
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Vereist: | False |
Pijplijninvoer accepteren: | False |
Jokertekens accepteren: | False |
-ApplicationName
Hiermee geeft u een toepassing op. Deze cmdlet maakt alleen verbinding met sessies die gebruikmaken van de opgegeven toepassing.
Voer het toepassingsnaamsegment van de verbindings-URI in. In de volgende verbindings-URI is WSMan bijvoorbeeld de naam van de toepassing: http://localhost:5985/WSMAN
.
De toepassingsnaam van een sessie wordt opgeslagen in de eigenschap Runspace.ConnectionInfo.AppName van de sessie.
De waarde van de parameter wordt gebruikt om sessies te selecteren en te filteren. De toepassing die door de sessie wordt gebruikt, wordt niet gewijzigd.
Type: | String |
Position: | Named |
Default value: | None |
Vereist: | False |
Pijplijninvoer accepteren: | True |
Jokertekens accepteren: | False |
-Authentication
Hiermee geeft u het mechanisme op dat wordt gebruikt om de gebruikersreferenties in de opdracht te verifiëren om opnieuw verbinding te maken met een niet-verbonden sessie. De acceptabele waarden voor deze parameter zijn:
- Verstek
- Basisch
- Credssp
- Verteren
- Kerberos
- Onderhandelen
- NegotiateWithImplicitCredential
De standaardwaarde is Standaard.
Zie Opsomming AuthenticationMechanismvoor meer informatie over de waarden van deze parameter.
Voorzichtigheid
CredSSP-verificatie (Credential Security Support Provider), waarbij de gebruikersreferenties worden doorgegeven aan een externe computer die moet worden geverifieerd, is ontworpen voor opdrachten waarvoor verificatie is vereist voor meer dan één resource, zoals toegang tot een externe netwerkshare. Dit mechanisme verhoogt het beveiligingsrisico van de externe bewerking. Als de externe computer is aangetast, kunnen de referenties die aan de computer worden doorgegeven, worden gebruikt om de netwerksessie te beheren.
Type: | AuthenticationMechanism |
Geaccepteerde waarden: | Default, Basic, Negotiate, NegotiateWithImplicitCredential, Credssp, Digest, Kerberos |
Position: | Named |
Default value: | Default |
Vereist: | False |
Pijplijninvoer accepteren: | False |
Jokertekens accepteren: | False |
-CertificateThumbprint
Hiermee geeft u het certificaat van de digitale openbare sleutel (X509) van een gebruikersaccount dat gemachtigd is om verbinding te maken met de niet-verbonden sessie. Voer de vingerafdruk van het certificaat in.
Certificaten worden gebruikt in verificatie op basis van clientcertificaten. Certificaten kunnen alleen worden toegewezen aan lokale gebruikersaccounts en werken niet met domeinaccounts.
Als u een vingerafdruk van een certificaat wilt ophalen, gebruikt u een Get-Item
of Get-ChildItem
opdracht in het PowerShell Cert:
-station.
Type: | String |
Position: | Named |
Default value: | None |
Vereist: | False |
Pijplijninvoer accepteren: | False |
Jokertekens accepteren: | False |
-ComputerName
Hiermee geeft u de computer waarop de niet-verbonden sessie wordt opgeslagen. Sessies worden opgeslagen op de computer die zich aan de serverzijde bevindt of het ontvangen van het einde van een verbinding. De standaardwaarde is de lokale computer.
Typ de NetBIOS-naam, een IP-adres of een FQDN (Fully Qualified Domain Name) van één computer.
Jokertekens zijn niet toegestaan. Als u de lokale computer wilt opgeven, typt u de computernaam, een punt (.
), $env:COMPUTERNAME
of localhost.
Type: | String |
Aliassen: | Cn |
Position: | 0 |
Default value: | None |
Vereist: | True |
Pijplijninvoer accepteren: | True |
Jokertekens accepteren: | False |
-ConfigurationName
Hiermee geeft u de naam van een sessieconfiguratie. Deze cmdlet maakt alleen verbinding met sessies die gebruikmaken van de opgegeven sessieconfiguratie.
Voer een configuratienaam of de volledig gekwalificeerde resource-URI in voor een sessieconfiguratie. Als u alleen de configuratienaam opgeeft, wordt de volgende schema-URI voorafgegaan:
http://schemas.microsoft.com/powershell
.
De configuratienaam van een sessie wordt opgeslagen in de eigenschap ConfigurationName van de sessie.
De waarde van de parameter wordt gebruikt om sessies te selecteren en te filteren. De sessieconfiguratie die door de sessie wordt gebruikt, wordt niet gewijzigd.
Zie about_Session_Configurationsvoor meer informatie over sessieconfiguraties.
Type: | String |
Position: | Named |
Default value: | None |
Vereist: | False |
Pijplijninvoer accepteren: | True |
Jokertekens accepteren: | False |
-Confirm
U wordt gevraagd om bevestiging voordat u de cmdlet uitvoert.
Type: | SwitchParameter |
Aliassen: | cf |
Position: | Named |
Default value: | False |
Vereist: | False |
Pijplijninvoer accepteren: | False |
Jokertekens accepteren: | False |
-ConnectionUri
Hiermee geeft u een URI op die het verbindingseindpunt definieert dat wordt gebruikt om opnieuw verbinding te maken met de niet-verbonden sessie.
De URI moet volledig gekwalificeerd zijn. De notatie van de tekenreeks is als volgt:
<Transport>://<ComputerName>:<Port>/<ApplicationName>
De standaardwaarde is als volgt:
http://localhost:5985/WSMAN
Als u geen verbindings-URI opgeeft, kunt u de UseSSL, ComputerName, Poorten ApplicationName parameters gebruiken om de verbindings-URI-waarden op te geven.
Geldige waarden voor het segment Transport van de URI zijn HTTP en HTTPS. Als u een verbindings-URI met een transportsegment opgeeft, maar geen poort opgeeft, wordt de sessie gemaakt met standaardpoorten: 80 voor HTTP en 443 voor HTTPS. Als u de standaardpoorten voor externe communicatie met PowerShell wilt gebruiken, geeft u poort 5985 op voor HTTP of 5986 voor HTTPS.
Als de doelcomputer de verbinding omleidt naar een andere URI, voorkomt PowerShell de omleiding, tenzij u de AllowRedirection parameter in de opdracht gebruikt.
Type: | Uri |
Aliassen: | URI, CU |
Position: | 0 |
Default value: | http://localhost:5985/WSMAN |
Vereist: | True |
Pijplijninvoer accepteren: | True |
Jokertekens accepteren: | False |
-Credential
Hiermee geeft u een gebruikersaccount op dat gemachtigd is om verbinding te maken met de niet-verbonden sessie. De standaardwaarde is de huidige gebruiker.
Typ een gebruikersnaam, zoals User01 of Domain01\User01, of voer een PSCredential--object in dat is gegenereerd door de Get-Credential
-cmdlet. Als u een gebruikersnaam typt, wordt u gevraagd het wachtwoord in te voeren.
Referenties worden opgeslagen in een PSCredential-object en het wachtwoord wordt opgeslagen als een SecureString-.
Notitie
Zie voor meer informatie over SecureString gegevensbeveiliging Hoe veilig is SecureString?.
Type: | PSCredential |
Position: | Named |
Default value: | Current user |
Vereist: | False |
Pijplijninvoer accepteren: | False |
Jokertekens accepteren: | False |
-Id
Hiermee geeft u de id van een niet-verbonden sessie. De parameter id werkt alleen wanneer de niet-verbonden sessie eerder is verbonden met de huidige sessie.
Deze parameter is geldig, maar niet effectief wanneer de sessie is opgeslagen op de lokale computer, maar niet is verbonden met de huidige sessie.
Type: | Int32 |
Position: | 0 |
Default value: | None |
Vereist: | True |
Pijplijninvoer accepteren: | True |
Jokertekens accepteren: | False |
-InstanceId
Hiermee geeft u de exemplaar-id van de niet-verbonden sessie. De exemplaar-id is een GUID waarmee een PSSession- op een lokale of externe computer uniek wordt geïdentificeerd. De exemplaar-id wordt opgeslagen in de eigenschap InstanceID van de PSSession-.
Type: | Guid |
Position: | Named |
Default value: | None |
Vereist: | True |
Pijplijninvoer accepteren: | False |
Jokertekens accepteren: | False |
-JobName
Hiermee geeft u een beschrijvende naam op voor de taak die Receive-PSSession
retourneert.
Receive-PSSession
retourneert een taak wanneer de waarde van de parameter OutTarget Taak is of de taak die wordt uitgevoerd in de niet-verbonden sessie is gestart in de huidige sessie.
Als de taak die wordt uitgevoerd in de niet-verbonden sessie is gestart in de huidige sessie, gebruikt PowerShell het oorspronkelijke taakobject in de sessie opnieuw en negeert u de waarde van de parameter JobName.
Als de taak die wordt uitgevoerd in de niet-verbonden sessie is gestart in een andere sessie, maakt PowerShell een nieuw taakobject. Er wordt een standaardnaam gebruikt, maar u kunt deze parameter gebruiken om de naam te wijzigen.
Als de standaardwaarde of expliciete waarde van de parameter OutTarget niet Job is, slaagt de opdracht, maar heeft de parameter JobName geen effect.
Type: | String |
Position: | Named |
Default value: | None |
Vereist: | False |
Pijplijninvoer accepteren: | False |
Jokertekens accepteren: | False |
-Name
Hiermee geeft u de beschrijvende naam van de niet-verbonden sessie.
Type: | String |
Position: | Named |
Default value: | None |
Vereist: | True |
Pijplijninvoer accepteren: | False |
Jokertekens accepteren: | False |
-OutTarget
Bepaalt hoe de sessieresultaten worden geretourneerd. De acceptabele waarden voor deze parameter zijn:
- taak. Retourneert de resultaten asynchroon in een taakobject. U kunt de parameter JobName gebruiken om een naam of nieuwe naam voor de taak op te geven.
- Host. Retourneert de resultaten naar de opdrachtregel (synchroon). Als de opdracht wordt hervat of de resultaten bestaan uit een groot aantal objecten, kan het antwoord worden vertraagd.
De standaardwaarde van de parameter OutTarget is Host. Als de opdracht die wordt ontvangen in een niet-verbonden sessie is gestart in de huidige sessie, is de standaardwaarde van de parameter OutTarget het formulier waarin de opdracht is gestart. Als de opdracht is gestart als een taak, wordt deze standaard geretourneerd als een taak. Anders wordt deze standaard teruggezet naar het hostprogramma.
Normaal gesproken geeft het hostprogramma zonder vertraging geretourneerde objecten weer op de opdrachtregel, maar dit gedrag kan variëren.
Type: | OutTarget |
Geaccepteerde waarden: | Default, Host, Job |
Position: | Named |
Default value: | None |
Vereist: | False |
Pijplijninvoer accepteren: | False |
Jokertekens accepteren: | False |
-Port
Hiermee geeft u de netwerkpoort van de externe computer die wordt gebruikt om opnieuw verbinding te maken met de sessie. Als u verbinding wilt maken met een externe computer, moet deze luisteren op de poort die door de verbinding wordt gebruikt. De standaardpoorten zijn 5985, de WinRM-poort voor HTTP en 5986, de WinRM-poort voor HTTPS.
Voordat u een alternatieve poort gebruikt, moet u de WinRM-listener op de externe computer configureren om op die poort te luisteren. Als u de listener wilt configureren, typt u de volgende twee opdrachten bij de PowerShell-prompt:
Remove-Item -Path WSMan:\Localhost\listener\listener* -Recurse
New-Item -Path WSMan:\Localhost\listener -Transport http -Address * -Port \<port-number\>
Gebruik de parameter Port niet, tenzij dit nodig is. De poort die in de opdracht is ingesteld, is van toepassing op alle computers of sessies waarop de opdracht wordt uitgevoerd. Een alternatieve poortinstelling kan verhinderen dat de opdracht wordt uitgevoerd op alle computers.
Type: | Int32 |
Position: | Named |
Default value: | None |
Vereist: | False |
Pijplijninvoer accepteren: | False |
Jokertekens accepteren: | False |
-Session
Hiermee geeft u de niet-verbonden sessie. Voer een variabele in die de PSSession- bevat of een opdracht waarmee de PSSession-wordt gemaakt of ophaalt, zoals een Get-PSSession
opdracht.
Type: | PSSession |
Position: | 0 |
Default value: | None |
Vereist: | True |
Pijplijninvoer accepteren: | True |
Jokertekens accepteren: | False |
-SessionOption
Hiermee geeft u geavanceerde opties voor de sessie. Voer een SessionOption--object in, zoals een object dat u maakt met behulp van de New-PSSessionOption
-cmdlet of een hash-tabel waarin de sleutels namen van sessieopties zijn en de waarden sessieoptiewaarden zijn.
De standaardwaarden voor de opties worden bepaald door de waarde van de $PSSessionOption
voorkeursvariabele, als deze is ingesteld. Anders worden de standaardwaarden ingesteld op basis van opties die zijn ingesteld in de sessieconfiguratie.
De waarden voor sessieopties hebben voorrang op standaardwaarden voor sessies die zijn ingesteld in de $PSSessionOption
voorkeursvariabele en in de sessieconfiguratie. Ze hebben echter geen voorrang op maximumwaarden, quota of limieten die zijn ingesteld in de sessieconfiguratie.
Zie New-PSSessionOption
voor een beschrijving van de sessieopties die de standaardwaarden bevatten. Zie about_Preference_Variablesvoor meer informatie over de $PSSessionOption voorkeursvariabele. Zie about_Session_Configurationsvoor meer informatie over sessieconfiguraties.
Type: | PSSessionOption |
Position: | Named |
Default value: | None |
Vereist: | False |
Pijplijninvoer accepteren: | False |
Jokertekens accepteren: | False |
-UseSSL
Geeft aan dat deze cmdlet het SSL-protocol (Secure Sockets Layer) gebruikt om verbinding te maken met de niet-verbonden sessie. SSL wordt standaard niet gebruikt.
WS-Management versleutelt alle PowerShell-inhoud die via het netwerk wordt verzonden. UseSSL- is een extra beveiliging waarmee de gegevens via een HTTPS-verbinding worden verzonden in plaats van een HTTP-verbinding.
Als u deze parameter gebruikt en SSL niet beschikbaar is op de poort die voor de opdracht wordt gebruikt, mislukt de opdracht.
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Vereist: | False |
Pijplijninvoer accepteren: | False |
Jokertekens accepteren: | False |
-WhatIf
Toont wat er zou gebeuren als de cmdlet wordt uitgevoerd. De cmdlet wordt niet uitgevoerd.
Type: | SwitchParameter |
Aliassen: | wi |
Position: | Named |
Default value: | False |
Vereist: | False |
Pijplijninvoer accepteren: | False |
Jokertekens accepteren: | False |
Invoerwaarden
U kunt sessieobjecten doorsturen naar deze cmdlet, zoals objecten die worden geretourneerd door de Get-PSSession
cmdlet.
U kunt sessie-id's doorsluisen naar deze cmdlet.
U kunt de exemplaar-id's van sessies doorsluisen met deze cmdlet.
U kunt sessienamen doorsluisen naar deze cmdlet.
Uitvoerwaarden
Als de waarde of standaardwaarde van de parameter OutTarget is Job
, retourneert Receive-PSSession
een taakobject.
Deze cmdlet retourneert de resultaten van opdrachten die zijn uitgevoerd in de niet-verbonden sessie, indien van toepassing.
Notities
Windows PowerShell bevat de volgende aliassen voor Receive-PSSession
:
rcsn
Receive-PSSession
krijgt alleen resultaten van sessies die zijn losgekoppeld. Alleen sessies die zijn verbonden met of worden beëindigd op computers met PowerShell 3.0 of hoger, kunnen worden verbroken en opnieuw worden verbonden.
Als de opdrachten die worden uitgevoerd in de niet-verbonden sessie geen resultaten hebben gegenereerd of als de resultaten al zijn geretourneerd naar een andere sessie, genereert Receive-PSSession
geen uitvoer.
De uitvoerbuffermodus van een sessie bepaalt hoe opdrachten in de sessie uitvoer beheren wanneer de verbinding met de sessie wordt verbroken. Wanneer de waarde van de OutputBufferingMode optie van de sessie is Drop en de uitvoerbuffer vol is, wordt de uitvoer verwijderd.
Receive-PSSession
kan deze uitvoer niet herstellen. Zie de Help-artikelen voor de New-PSSessionOption- en New-PSTransportOption cmdlets voor meer informatie over de uitvoerbuffermodus.
U kunt de time-outwaarde voor inactiviteit van een PSSession- niet wijzigen wanneer u verbinding maakt met de PSSession- of resultaten ontvangt. De parameter SessionOption van Receive-PSSession
neemt een SessionOption--object met een IdleTimeout--waarde. De IdleTimeout- waarde van het object SessionOption en de IdleTimeout- waarde van de variabele $PSSessionOption
worden echter genegeerd wanneer deze verbinding maakt met een PSSession- of resultaten ontvangt.
- U kunt de time-out voor inactiviteit van een PSSession- instellen en wijzigen wanneer u de PSSession-maakt, met behulp van de
New-PSSession
- ofInvoke-Command
-cmdlets en wanneer u de verbinding met de PSSession-verbreekt. - De eigenschap IdleTimeout van een PSSession- is essentieel voor verbroken sessies, omdat hiermee wordt bepaald hoe lang een niet-verbonden sessie op de externe computer wordt onderhouden. Niet-verbonden sessies worden beschouwd als niet-actief vanaf het moment dat de verbinding is verbroken, zelfs als opdrachten worden uitgevoerd in de niet-verbonden sessie.
Als u een taak in een externe sessie start met behulp van de AsJob parameter van de Invoke-Command
cmdlet, wordt het taakobject gemaakt in de huidige sessie, ook al wordt de taak uitgevoerd in de externe sessie. Als u de verbinding met de externe sessie verbreekt, wordt het taakobject in de huidige sessie losgekoppeld van de taak. Het taakobject bevat resultaten die eraan zijn geretourneerd, maar ontvangt geen nieuwe resultaten van de taak in de niet-verbonden sessie.
Als een andere client verbinding maakt met de sessie die de actieve taak bevat, zijn de resultaten die zijn geleverd aan het oorspronkelijke taakobject in de oorspronkelijke sessie niet beschikbaar in de zojuist verbonden sessie. Alleen resultaten die niet aan het oorspronkelijke taakobject zijn geleverd, zijn beschikbaar in de opnieuw verbonden sessie.
Als u een script in een sessie start en vervolgens de verbinding met de sessie verbreekt, zijn eventuele resultaten die het script aan de sessie levert voordat de verbinding wordt verbroken niet beschikbaar voor een andere client die verbinding maakt met de sessie.
Gebruik de parameter InDisconnectedSession parameter van de Invoke-Command
cmdlet om gegevensverlies in sessies die u wilt verbreken te voorkomen. Omdat deze parameter voorkomt dat resultaten worden geretourneerd naar de huidige sessie, zijn alle resultaten beschikbaar wanneer de sessie opnieuw verbinding maakt.
U kunt ook gegevensverlies voorkomen met behulp van de cmdlet Invoke-Command
om een Start-Job
opdracht uit te voeren in de externe sessie. In dit geval wordt het taakobject gemaakt in de externe sessie. U kunt de Receive-PSSession
cmdlet niet gebruiken om de taakresultaten op te halen. Gebruik in plaats daarvan de cmdlet Connect-PSSession
om verbinding te maken met de sessie en gebruik vervolgens de Invoke-Command
cmdlet om een Receive-Job
opdracht uit te voeren in de sessie.
Wanneer een sessie met een actieve taak wordt verbroken en vervolgens opnieuw verbinding maakt, wordt het oorspronkelijke taakobject alleen opnieuw gebruikt als de taak is verbroken en opnieuw is verbonden met dezelfde sessie. De opdracht om opnieuw verbinding te maken geeft geen nieuwe taaknaam op. Als de sessie opnieuw verbinding maakt met een andere clientsessie of als er een nieuwe taaknaam is opgegeven, maakt PowerShell een nieuw taakobject voor de nieuwe sessie.
Wanneer u de verbinding met een PSSessionverbreekt, wordt de sessiestatus verbroken en is de beschikbaarheid Geen.
- De waarde van de eigenschap State is relatief ten opzichte van de huidige sessie. De waarde Verbinding verbroken betekent dat de PSSession- niet is verbonden met de huidige sessie. Het betekent echter niet dat de PSSession- is losgekoppeld van alle sessies. Het kan zijn dat deze is verbonden met een andere sessie. Gebruik de eigenschap Availability om te bepalen of u verbinding kunt maken met de sessie of opnieuw verbinding kunt maken met de sessie.
- Een beschikbaarheidswaarde van Geen geeft aan dat u verbinding kunt maken met de sessie. Een waarde van Bezet geeft aan dat u geen verbinding kunt maken met de PSSession- omdat deze is verbonden met een andere sessie.
- Zie RunspaceStatevoor meer informatie over de waarden van de eigenschap State van sessies.
- Zie RunspaceAvailabilityvoor meer informatie over de waarden van de eigenschap Availability van sessies.