Delen via


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-CommandInDisconnectedSession. 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-PSSessionverzonden.

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:COMPUTERNAMEof 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-PSSessionOptionvoor 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

PSSession

U kunt sessieobjecten doorsturen naar deze cmdlet, zoals objecten die worden geretourneerd door de Get-PSSession cmdlet.

Int32

U kunt sessie-id's doorsluisen naar deze cmdlet.

Guid

U kunt de exemplaar-id's van sessies doorsluisen met deze cmdlet.

String

U kunt sessienamen doorsluisen naar deze cmdlet.

Uitvoerwaarden

Job

Als de waarde of standaardwaarde van de parameter OutTarget is Job, retourneert Receive-PSSession een taakobject.

PSObject

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- of Invoke-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.