Receive-PSSession

Resultaten ophalen van opdrachten in niet-verbonden sessies

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>]

Description

De Receive-PSSession cmdlet haalt de resultaten op van opdrachten die worden uitgevoerd in PowerShell-sessies (PSSession) die zijn losgekoppeld. Als de sessie momenteel is verbonden, Receive-PSSession worden de resultaten opgehaald van opdrachten die werden uitgevoerd toen de sessie werd verbroken. Als de verbinding met de sessie nog steeds is verbroken, Receive-PSSession maakt u verbinding 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 aanvulling op of in plaats van een Connect-PSSession opdracht gebruiken. Receive-PSSession kan verbinding maken met elke niet-verbonden of opnieuw verbonden sessie die is gestart in andere sessies of op andere computers.

Receive-PSSession werkt op PSSessions die opzettelijk zijn losgekoppeld met behulp van de Disconnect-PSSession cmdlet of de Invoke-Commandparameter 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, Receive-PSSession maakt u verbinding met de sessie, maar retourneert u geen uitvoer of fouten.

Zie about_Remote_Disconnected_Sessions voor 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_Splatting voor meer informatie.

Voorbeelden

Voorbeeld 1: Verbinding maken naar 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

Hiermee Receive-PSSession geeft u de externe computer 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 OutTarget-parameter 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, Receive-PSSession maakt u geen verbinding met de sessie en retourneert u 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 de pijplijn 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 computernaam - en naamparameters om de niet-verbonden sessie te identificeren. Hierbij wordt de OutTarget-parameter met een waarde van Job gebruikt Receive-PSSession om de resultaten als een taak te retourneren. De parameter JobName geeft een naam op voor de taak in de opnieuw verbonden sessie. De referentieparameter voert de Receive-PSSession opdracht uit met behulp van de machtigingen van een domeinbeheerder.

In de uitvoer ziet u dat Receive-PSSession de resultaten zijn geretourneerd als een taak in de huidige sessie. Gebruik een Receive-Job opdracht om de taakresultaten op te halen

Voorbeeld 4: Resultaten ophalen na een netwerkstoring

In dit voorbeeld wordt de Receive-PSSession cmdlet 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 $s variabele geeft aan dat de status is geopend en dat de beschikbaarheid beschikbaar is. Deze waarden geven aan dat u verbonden bent met de sessie en opdrachten in de sessie kunnen uitvoeren.

De Invoke-Command cmdlet 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 status geeft aan dat de AD-sessie is verbroken. De beschikbaarheidswaarde Geen geeft aan dat de sessie niet is verbonden met clientsessies.

De Receive-PSSession cmdlet maakt opnieuw verbinding met de AD-sessie en haalt de resultaten op van het script dat in de sessie is uitgevoerd. De opdracht maakt gebruik van de outTarget-parameter 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 Get-PSSession cmdlet 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 Receive-PSSession cmdlet 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 Invoke-Command cmdlet 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 vervolgens 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 waarde IdleTimeout 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 deze om de sessies op te halen waarin de scripts werden uitgevoerd. Met de opdracht worden de sessies geïdentificeerd op basis van de computernaam, sessienaam en de naam van de sessieconfiguratie en worden de sessies opgeslagen in de $s variabele. De waarde van de $s variabele 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 in de $Results variabele opgeslagen. De $s variabele wordt weergegeven en geeft aan dat de sessies zijn verbonden en beschikbaar zijn voor opdrachten.

De scriptresultaten in de $Results variabele worden 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 $s variabele.

De Invoke-Command cmdlet 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 $s variabele wordt naar de pijplijn Disconnect-PSSession verzonden en de sessie wordt verbroken.

De $j variabele wordt weergegeven en toont het effect van het verbreken van de verbinding van het taakobject in de $j variabele. De taakstatus is nu verbroken.

De Receive-Job taak wordt uitgevoerd 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 $s2 variabele.

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, Receive-PSSession worden de resultaten standaard geretourneerd als een taak en wordt hetzelfde taakobject opnieuw gebruikt. Met de opdracht wordt de taak opgeslagen in de $j2 variabele. Met Receive-Job de cmdlet worden de resultaten van de taak in de $j variabele opgehaald.

Parameters

-AllowRedirection

Geeft aan dat deze cmdlet omleiding van deze verbinding met een alternatieve URI (Uniform Resource Identifier) toestaat.

Wanneer u de parameter Verbinding maken ionURI 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 optiewaarde Maximum Verbinding maken ionRedirectionCount-sessie te wijzigen. Gebruik de parameter MaximumRedirection van de New-PSSessionOption cmdlet of stel de eigenschap Maximum Verbinding maken ionRedirectionCount van de $PSSessionOption voorkeursvariabele in. De standaardwaarde is 5.

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters: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 runspace.Verbinding maken de eigenschap ionInfo.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
Required:False
Accept pipeline input:True
Accept wildcard characters: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 aanvaardbare waarden voor deze parameter zijn:

  • Standaardinstelling
  • Basis
  • Credssp
  • Digest
  • Kerberos
  • Onderhandelen
  • NegotiateWithImplicitCredential

De standaardwaarde is Standaard.

Zie AuthenticationMechanism Enumeration voor meer informatie over de waarden van deze parameter.

Let op

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
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

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-station Cert: .

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters: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. Standaard is dit 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
Aliases:Cn
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters: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_Configurations (Engelstalig) voor meer informatie over sessieconfiguraties.

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

-Confirm

Hiermee wordt u gevraagd om bevestiging voordat u de cmdlet uitvoert.

Type:SwitchParameter
Aliases:cf
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters: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 parameters UseSSL, ComputerName, Port en ApplicationName gebruiken om de verbindings-URI-waarden op te geven.

Geldige waarden voor het transportsegment 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 parameter AllowRedirection in de opdracht gebruikt.

Type:Uri
Aliases:URI, CU
Position:0
Default value:http://localhost:5985/WSMAN
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-Credential

Hiermee geeft u een gebruikersaccount op dat gemachtigd is om verbinding te maken met de niet-verbonden sessie. Standaard is dit 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 SecureString.

Notitie

Zie Hoe veilig is SecureString SecureString?voor meer informatie over SecureString-gegevensbeveiliging.

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

-Id

Hiermee geeft u de id van een niet-verbonden sessie. De id-parameter 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
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-InstanceId

Hiermee geeft u de exemplaar-id van de niet-verbonden sessie. De exemplaar-id is een GUID die een PSSession uniek identificeert op een lokale of externe computer. De exemplaar-id wordt opgeslagen in de eigenschap InstanceID van de PSSession.

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

-JobName

Hiermee geeft u een beschrijvende naam op voor de taak die Receive-PSSession wordt geretourneerd.

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 OutTarget-parameter niet Job is, slaagt de opdracht, maar heeft de parameter JobName geen effect.

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

-Name

Hiermee geeft u de beschrijvende naam van de niet-verbonden sessie.

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

-OutTarget

Bepaalt hoe de sessieresultaten worden geretourneerd. De aanvaardbare waarden voor deze parameter zijn:

  • Job. 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
Accepted values:Default, Host, Job
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters: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 poortparameter alleen als 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
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Session

Hiermee geeft u de niet-verbonden sessie. Voer een variabele in die de PSSession of een opdracht bevat waarmee de PSSession wordt gemaakt of ophaalt, zoals een Get-PSSession opdracht.

Type:PSSession
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters: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 voor een beschrijving van de sessieopties die de standaardwaarden New-PSSessionOptionbevatten. Zie about_Preference_Variables voor meer informatie over de $PSSessionOption voorkeursvariabele. Zie about_Session_Configurations (Engelstalig) voor meer informatie over sessieconfiguraties.

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

-WhatIf

Hiermee wordt weergegeven wat er zou gebeuren als u de cmdlet uitvoert. De cmdlet wordt niet uitgevoerd.

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

Invoerwaarden

PSSession

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

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 outTarget-parameter is Job, Receive-PSSession retourneert u 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 verbroken. 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, Receive-PSSession worden er geen uitvoer gegenereerd.

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 optie OutputBufferingMode van de sessie Drop is en de uitvoerbuffer vol is, wordt de uitvoer verwijderd. Receive-PSSession kan deze uitvoer niet herstellen. Zie de Help-artikelen voor de cmdlets New-PSSessionOption en New-PSTransportOption voor meer informatie over de optie voor 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 waarde IdleTimeout van het SessionOption-object en de idleTimeout-waarde van de variabele worden echter genegeerd wanneer deze $PSSessionOption 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 niet-verbonden sessies, omdat hiermee wordt bepaald hoelang een niet-verbonden sessie wordt onderhouden op de externe computer. 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 parameter AsJob 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 van de Invoke-Command cmdlet om gegevensverlies te voorkomen in sessies die u wilt verbreken. 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 Invoke-Command cmdlet 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 Connect-PSSession cmdlet om verbinding te maken met de sessie en gebruik vervolgens de Invoke-Command cmdlet om een Receive-Job opdracht in de sessie uit te voeren.

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 een PSSession loskoppelt, wordt de sessiestatus verbroken en is de beschikbaarheid Geen.

  • De waarde van de eigenschap State is relatief ten opzichte van de huidige sessie. Een waarde van 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 Beschikbaarheid om te bepalen of u verbinding kunt maken met de sessie of opnieuw verbinding kunt maken.
  • Een beschikbaarheidswaarde van None 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 RunspaceState voor meer informatie over de waarden van de eigenschap State van sessies.
  • Zie RunspaceAvailability voor meer informatie over de waarden van de eigenschap Beschikbaarheid van sessies.