Receive-PSSession

Hämtar resultat av kommandon i frånkopplade sessioner

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

Cmdleten Receive-PSSession hämtar resultatet av kommandon som körs i PowerShell-sessioner (PSSession) som var frånkopplade. Om sessionen för närvarande är ansluten Receive-PSSession får du resultatet av kommandon som kördes när sessionen kopplades från. Om sessionen fortfarande är frånkopplad Receive-PSSession ansluter du till sessionen, återupptar alla kommandon som har pausats och hämtar resultatet av kommandon som körs i sessionen.

Den här cmdleten introducerades i PowerShell 3.0.

Du kan använda en Receive-PSSession utöver eller i stället för ett Connect-PSSession kommando. Receive-PSSession kan ansluta till alla frånkopplade eller återanslutna sessioner som startades i andra sessioner eller på andra datorer.

Receive-PSSession fungerar på PSSessions som har kopplats från avsiktligt med hjälp av parametern Disconnect-PSSession cmdlet eller Invoke-CommandInDisconnectedSession . Eller kopplas från oavsiktligt av ett nätverksavbrott.

Om du använder cmdleten Receive-PSSession för att ansluta till en session där inga kommandon körs eller pausas Receive-PSSession ansluter du till sessionen, men returnerar inga utdata eller fel.

Mer information om funktionen Frånkopplade sessioner finns i about_Remote_Disconnected_Sessions.

Vissa exempel använder splatting för att minska linjelängden och förbättra läsbarheten. Mer information finns i about_Splatting.

Exempel

Exempel 1: Anslut till en PSSession

Det här exemplet ansluter till en session på en fjärrdator och hämtar resultatet av kommandon som körs i en session.

Receive-PSSession -ComputerName Server01 -Name ITTask

Receive-PSSession Anger fjärrdatorn med parametern ComputerName. Parametern Namn identifierar ITTask-sessionen på Server01-datorn. Exemplet hämtar resultatet av kommandon som kördes i ITTask-sessionen.

Eftersom kommandot inte använder parametern OutTarget visas resultatet på kommandoraden.

Exempel 2: Hämta resultat för alla kommandon på frånkopplade sessioner

Det här exemplet hämtar resultatet av alla kommandon som körs i alla frånkopplade sessioner på två fjärrdatorer.

Om någon session inte var frånkopplad eller inte kör kommandon ansluter Receive-PSSession du inte till sessionen och returnerar inga utdata eller fel.

Get-PSSession -ComputerName Server01, Server02 | Receive-PSSession

Get-PSSession använder parametern ComputerName för att ange fjärrdatorerna. Objekten skickas ned i pipelinen till Receive-PSSession.

Exempel 3: Hämta resultatet av ett skript som körs i en session

I det här exemplet används cmdleten Receive-PSSession för att hämta resultatet av ett skript som kördes i en fjärrdators session.

$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

Kommandot använder parametrarna ComputerName och Name för att identifiera den frånkopplade sessionen. Den använder parametern OutTarget med värdet Jobb för att dirigera Receive-PSSession för att returnera resultatet som ett jobb. JobName-parametern anger ett namn för jobbet i den återanslutna sessionen. Parametern Credential kör Receive-PSSession kommandot med en domänadministratörs behörigheter.

Utdata visar att Receive-PSSession returnerade resultatet som ett jobb i den aktuella sessionen. Om du vill hämta jobbresultatet använder du ett Receive-Job kommando

Exempel 4: Hämta resultat efter ett nätverksfel

I det här exemplet används cmdleten Receive-PSSession för att hämta resultatet av ett jobb efter ett nätverksavbrott som stör en sessionsanslutning. PowerShell försöker automatiskt återansluta sessionen en gång per sekund under de kommande fyra minuterna och avger bara ansträngningen om alla försök under fyraminutersintervallet misslyckas.

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

Cmdleten New-PSSession skapar en session på Server01-datorn och sparar sessionen i variabeln $s . Variabeln $s visar att tillståndet har öppnats och att tillgängligheten är tillgänglig. Dessa värden anger att du är ansluten till sessionen och kan köra kommandon i sessionen.

Cmdleten Invoke-Command kör ett skript i sessionen i variabeln $s . Skriptet börjar köra och returnera data, men ett nätverksavbrott inträffar som avbryter sessionen. Användaren måste avsluta sessionen och starta om den lokala datorn.

När datorn startas om startar användaren PowerShell och kör ett Get-PSSession kommando för att hämta sessioner på Server01-datorn. Utdata visar att AD-sessionen fortfarande finns på Server01-datorn. Tillståndet anger att AD-sessionen är frånkopplad. Tillgänglighetsvärdet ingen anger att sessionen inte är ansluten till några klientsessioner.

Cmdleten Receive-PSSession återansluter till AD-sessionen och hämtar resultatet av skriptet som kördes i sessionen. Kommandot använder parametern OutTarget för att begära resultatet i ett jobb med namnet ADJob. Kommandot returnerar ett jobbobjekt och utdata anger att skriptet fortfarande körs.

Cmdleten Get-PSSession används för att kontrollera jobbtillståndet. Utdata bekräftar att cmdleten Receive-PSSession återansluts till AD-sessionen , som nu är öppen och tillgänglig för kommandon. Och skriptet återupptog körningen och hämtar skriptresultatet.

Exempel 5: Återanslut till frånkopplade sessioner

I det här exemplet används cmdleten Receive-PSSession för att återansluta till sessioner som avsiktligt kopplades från och hämta resultatet av jobb som kördes i sessionerna.

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

Cmdleten Invoke-Command kör ett skript på tre fjärrdatorer. Eftersom skriptet samlar in och sammanfattar data från flera databaser tar det ofta längre tid att slutföra skriptet. Kommandot använder parametern InDisconnectedSession som startar skripten och sedan omedelbart kopplar från sessionerna. Parametern SessionOption utökar värdet IdleTimeout för den frånkopplade sessionen. Frånkopplade sessioner anses vara inaktiva från det ögonblick de kopplas från. Det är viktigt att ange tidsgränsen för inaktivitet tillräckligt länge så att kommandona kan slutföras och du kan återansluta till sessionen. Du kan bara ange IdleTimeout när du skapar PSSession och bara ändrar den när du kopplar från den. Du kan inte ändra värdet IdleTimeout när du ansluter till en PSSession eller får dess resultat. När du har kört kommandot avslutar användaren PowerShell och stänger datorn.

Nästa dag återupptar användaren Windows, startar PowerShell och använder Get-PSSession för att hämta de sessioner där skripten kördes. Kommandot identifierar sessionerna efter datornamn, sessionsnamn och namnet på sessionskonfigurationen och sparar sessionerna i variabeln $s . Värdet för variabeln $s visas och visar att sessionerna är frånkopplade, men inte är upptagna.

Cmdleten Receive-PSSession ansluter till sessionerna i variabeln $s och hämtar sina resultat. Kommandot sparar resultatet i variabeln $Results . Variabeln $s visas och visar att sessionerna är anslutna och tillgängliga för kommandon.

Skriptresultatet i variabeln $Results visas i PowerShell-konsolen. Om något av resultaten är oväntat kan användaren köra kommandon i sessionerna för att undersöka rotorsaken.

Exempel 6: Köra ett jobb i en frånkopplad session

Det här exemplet visar vad som händer med ett jobb som körs i en frånkopplad session.

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

Cmdleten New-PSSession skapar testsessionen på Server01-datorn. Kommandot sparar sessionen i variabeln $s .

Cmdleten Invoke-Command kör ett kommando i sessionen i variabeln $s . Kommandot använder asjob-parametern för att köra kommandot som ett jobb och skapar jobbobjektet i den aktuella sessionen. Kommandot returnerar ett jobbobjekt som sparas i variabeln $j . Variabeln $j visar jobbobjektet.

Sessionsobjektet i variabeln $s skickas ned pipelinen till Disconnect-PSSession och sessionen kopplas från.

Variabeln $j visas och visar effekten av att koppla från jobbobjektet i variabeln $j . Jobbtillståndet är nu frånkopplat.

Receive-Job körs på jobbet i variabeln$j. Utdata visar att jobbet började returnera utdata innan sessionen och jobbet kopplades från.

Cmdleten Connect-PSSession körs i samma klientsession. Kommandot återansluter till testsessionen på Server01-datorn och sparar sessionen i variabeln $s2 .

Cmdleten Receive-PSSession hämtar resultatet av jobbet som kördes i sessionen. Eftersom kommandot körs i samma session Receive-PSSession returnerar resultatet som ett jobb som standard och återanvänder samma jobbobjekt. Kommandot sparar jobbet i variabeln $j2 . Cmdleten Receive-Job hämtar resultatet av jobbet i variabeln $j .

Parametrar

-AllowRedirection

Anger att denna cmdlet tillåter omdirigering av den här anslutningen till en alternativ URI (Uniform Resource Identifier).

När du använder parametern ConnectionURI kan fjärrmålet returnera en instruktion för att omdirigera till en annan URI. Som standard omdirigerar PowerShell inte anslutningar, men du kan använda den här parametern för att göra det möjligt för den att omdirigera anslutningen.

Du kan också begränsa antalet gånger som anslutningen omdirigeras genom att ändra sessionsalternativvärdet MaximumConnectionRedirectionCount . Använd parametern MaximumRedirection för cmdleten New-PSSessionOption eller ange egenskapen MaximumConnectionRedirectionCount för inställningsvariabeln $PSSessionOption . Standardvärdet är 5.

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

-ApplicationName

Anger ett program. Den här cmdleten ansluter endast till sessioner som använder det angivna programmet.

Ange programnamnssegmentet för anslutnings-URI:n. I följande anslutnings-URI är WSMan till exempel programnamnet: https://localhost:5985/WSMAN.

Programnamnet för en session lagras i egenskapen Runspace.ConnectionInfo.AppName för sessionen.

Parameterns värde används för att välja och filtrera sessioner. Det ändrar inte programmet som används av sessionen.

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

-Authentication

Anger den mekanism som används för att autentisera användarautentiseringsuppgifterna i kommandot för att återansluta till en frånkopplad session. De acceptabla värdena för den här parametern är:

  • Standardvärde
  • Basic
  • Credssp
  • Sammandrag
  • Kerberos
  • Negotiate
  • NegotiateWithImplicitCredential

Standardvärdet är Standard.

Mer information om värdena för den här parametern finns i AuthenticationMechanism Enumeration.

Varning

CredSSP-autentisering (Credential Security Support Provider), där autentiseringsuppgifterna skickas till en fjärrdator som ska autentiseras, är utformad för kommandon som kräver autentisering på mer än en resurs, till exempel åtkomst till en fjärrnätverksresurs. Den här mekanismen ökar säkerhetsrisken för fjärråtgärden. Om fjärrdatorn komprometteras kan de autentiseringsuppgifter som skickas till den användas för att styra nätverkssessionen.

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

Anger certifikatet för den digitala offentliga nyckeln (X509) för ett användarkonto som har behörighet att ansluta till den frånkopplade sessionen. Ange certifikatets tumavtryck.

Certifikat används i klientcertifikatbaserad autentisering. Certifikat kan endast mappas till lokala användarkonton och fungerar inte med domänkonton.

Om du vill hämta ett tumavtryck för certifikat använder du ett Get-Item - eller Get-ChildItem -kommando på PowerShell-enheten Cert: .

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

-ComputerName

Anger den dator där den frånkopplade sessionen lagras. Sessioner lagras på den dator som finns på serversidan eller tar emot slutet av en anslutning. Standard är den lokala datorn.

Ange NetBIOS-namnet, en IP-adress eller ett fullständigt domännamn (FQDN) för en dator. Jokertecken tillåts inte. Om du vill ange den lokala datorn skriver du datornamnet, en punkt (.), $env:COMPUTERNAME, eller localhost.

Type:String
Aliases:Cn
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-ConfigurationName

Anger namnet på en sessionskonfiguration. Den här cmdleten ansluter endast till sessioner som använder den angivna sessionskonfigurationen.

Ange ett konfigurationsnamn eller en fullständigt kvalificerad resurs-URI för en sessionskonfiguration. Om du bara anger konfigurationsnamnet läggs följande schema-URI till:

https://schemas.microsoft.com/powershell.

Konfigurationsnamnet för en session lagras i egenskapen ConfigurationName för sessionen.

Parameterns värde används för att välja och filtrera sessioner. Den ändrar inte sessionskonfigurationen som används av sessionen.

För ytterligare information om sessionskonfigurationer, se about_Session_Configurations.

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

-Confirm

Uppmanar dig att bekräfta innan du kör cmdleten.

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

-ConnectionUri

Anger en URI som definierar anslutningsslutpunkten som används för att återansluta till den frånkopplade sessionen.

URI:n måste vara fullständigt kvalificerad. Strängens format är följande:

<Transport>://<ComputerName>:<Port>/<ApplicationName>

Standardvärdet är följande:

https://localhost:5985/WSMAN

Om du inte anger en anslutnings-URI kan du använda parametrarna UseSSL, ComputerName, Port och ApplicationName för att ange anslutningens URI-värden.

Giltiga värden för transportsegmentet för URI:n är HTTP och HTTPS. Om du anger en anslutnings-URI med ett transportsegment, men inte anger någon port, skapas sessionen med standardportarna: 80 för HTTP och 443 för HTTPS. Om du vill använda standardportarna för PowerShell-fjärrkommunikation anger du port 5985 för HTTP eller 5986 för HTTPS.

Om måldatorn omdirigerar anslutningen till en annan URI förhindrar PowerShell omdirigeringen såvida du inte använder parametern AllowRedirection i kommandot.

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

-Credential

Anger ett användarkonto som har behörighet att ansluta till den frånkopplade sessionen. Standard är den aktuella användaren.

Ange ett användarnamn, till exempel User01 eller Domain01\User01, eller ange ett PSCredential-objekt som genereras av cmdleten Get-Credential . Om du skriver ett användarnamn uppmanas du att ange lösenordet.

Autentiseringsuppgifter lagras i ett PSCredential-objekt och lösenordet lagras som en SecureString.

Anteckning

Mer information om SecureString-dataskydd finns i Hur säkert är SecureString?.

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

-Id

Anger ID för en frånkopplad session. Id-parametern fungerar bara när den frånkopplade sessionen tidigare var ansluten till den aktuella sessionen.

Den här parametern är giltig, men inte effektiv, när sessionen lagras på den lokala datorn, men inte var ansluten till den aktuella sessionen.

Type:Int32
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-InstanceId

Anger instans-ID för den frånkopplade sessionen. Instans-ID:t är ett GUID som unikt identifierar en PSSession på en lokal dator eller fjärrdator. Instans-ID:t lagras i egenskapen InstanceID för PSSession.

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

-JobName

Anger ett eget namn för jobbet som Receive-PSSession returneras.

Receive-PSSession returnerar ett jobb när värdet för parametern OutTarget är Jobb eller jobbet som körs i den frånkopplade sessionen startades i den aktuella sessionen.

Om jobbet som körs i den frånkopplade sessionen startades i den aktuella sessionen återanvänder PowerShell det ursprungliga jobbobjektet i sessionen och ignorerar värdet för jobname-parametern .

Om jobbet som körs i den frånkopplade sessionen startades i en annan session skapar PowerShell ett nytt jobbobjekt. Den använder ett standardnamn, men du kan använda den här parametern för att ändra namnet.

Om standardvärdet eller det explicita värdet för outtarget-parametern inte är Jobb, lyckas kommandot, men jobname-parametern har ingen effekt.

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

-Name

Anger det egna namnet på den frånkopplade sessionen.

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

-OutTarget

Avgör hur sessionsresultatet returneras. De acceptabla värdena för den här parametern är:

  • Jobb. Returnerar resultaten asynkront i ett jobbobjekt. Du kan använda jobname-parametern för att ange ett namn eller ett nytt namn för jobbet.
  • Värd. Returnerar resultatet till kommandoraden (synkront). Om kommandot återupptas eller om resultatet består av ett stort antal objekt kan svaret fördröjas.

Standardvärdet för parametern OutTarget är Värd. Om kommandot som tas emot i en frånkopplad session startades i den aktuella sessionen är standardvärdet för parametern OutTarget det formulär där kommandot startades. Om kommandot startades som ett jobb returneras det som standard som ett jobb. Annars returneras den till värdprogrammet som standard.

Normalt visar värdprogrammet returnerade objekt på kommandoraden utan fördröjning, men det här beteendet kan variera.

Type:OutTarget
Accepted values:Default, Host, Job
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Port

Anger fjärrdatorns nätverksport som används för att återansluta till sessionen. Om du vill ansluta till en fjärrdator måste den lyssna på porten som anslutningen använder. Standardportarna är 5985, som är WinRM-porten för HTTP och 5986, som är WinRM-porten för HTTPS.

Innan du använder en alternativ port måste du konfigurera WinRM-lyssnaren på fjärrdatorn så att den lyssnar på porten. Om du vill konfigurera lyssnaren skriver du följande två kommandon i PowerShell-prompten:

Remove-Item -Path WSMan:\Localhost\listener\listener* -Recurse

New-Item -Path WSMan:\Localhost\listener -Transport http -Address * -Port \<port-number\>

Använd inte portparametern om det inte är nödvändigt. Porten som anges i kommandot gäller för alla datorer eller sessioner där kommandot körs. En alternativ portinställning kan förhindra att kommandot körs på alla datorer.

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

-Session

Anger den frånkopplade sessionen. Ange en variabel som innehåller PSSession eller ett kommando som skapar eller hämtar PSSession, till exempel ett Get-PSSession kommando.

Type:PSSession
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-SessionOption

Anger avancerade alternativ för sessionen. Ange ett SessionOption-objekt , till exempel ett objekt som du skapar med hjälp av cmdleten New-PSSessionOption eller en hash-tabell där nycklarna är sessionsalternativnamn och värdena är sessionsalternativvärden.

Standardvärdena för alternativen bestäms av värdet för $PSSessionOption inställningsvariabeln, om den har angetts. Annars upprättas standardvärdena av de alternativ som anges i sessionskonfigurationen.

Värdena för sessionsalternativ har företräde framför standardvärdena för sessioner som angetts i $PSSessionOption inställningsvariabeln och i sessionskonfigurationen. De har dock inte företräde framför de högsta värden, kvoter eller gränser som angetts i sessionskonfigurationen.

En beskrivning av sessionsalternativen som innehåller standardvärdena finns i New-PSSessionOption. Information om $PSSessionOption-inställningsvariabeln finns i about_Preference_Variables. För ytterligare information om sessionskonfigurationer, se about_Session_Configurations.

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

-UseSSL

Anger att denna cmdlet använder SSL-protokollet (Secure Sockets Layer) för att ansluta till den frånkopplade sessionen. Som standard används inte SSL.

WS-Management krypterar allt PowerShell-innehåll som överförs via nätverket. UseSSL är ett ytterligare skydd som skickar data via en HTTPS-anslutning i stället för en HTTP-anslutning.

Om du använder den här parametern och SSL inte är tillgängligt på porten som används för kommandot misslyckas kommandot.

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

-WhatIf

Visar vad som skulle hända om cmdleten kördes. Cmdleten körs inte.

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

Indata

PSSession

Du kan skicka sessionsobjekt till den här cmdleten, till exempel objekt som returneras av cmdleten Get-PSSession .

Int32

Du kan skicka sessions-ID:t till den här cmdleten.

Guid

Du kan skicka instans-ID:t för sessioner till den här cmdleten.

String

Du kan skicka sessionsnamn till den här cmdleten.

Utdata

System.Management.Automation.Job or PSObject

Den här cmdleten returnerar resultatet av kommandon som kördes i den frånkopplade sessionen, om det finns några. Om värdet eller standardvärdet för parametern OutTarget är Job returnerar Receive-PSSession ett jobbobjekt. Annars returneras objekt som representerar kommandoresultatet.

Kommentarer

Den här cmdleten är endast tillgänglig på Windows-plattformar.

Receive-PSSession hämtar endast resultat från sessioner som har kopplats från. Endast sessioner som är anslutna till eller avslutas på datorer som kör PowerShell 3.0 eller senare versioner kan kopplas från och återanslutas.

Om kommandona som kördes i den frånkopplade sessionen inte genererade resultat eller om resultaten redan returnerades till en annan session Receive-PSSession genererar inga utdata.

En sessions utdatabuffertningsläge avgör hur kommandon i sessionen hanterar utdata när sessionen kopplas från. När värdet för alternativet OutputBufferingMode för sessionen är Drop och utdatabufferten är full börjar kommandot ta bort utdata. Receive-PSSession kan inte återställa dessa utdata. Mer information om alternativet för utdatabuffertningsläge finns i hjälpartiklarna för cmdletarna New-PSSessionOption och New-PSTransportOption .

Du kan inte ändra tidsgränsvärdet för inaktivitet för en PSSession när du ansluter till PSSession eller får resultat. Parametern Receive-PSSessionSessionOption i tar ett SessionOption-objekt som har ett IdleTimeout-värde. Värdet IdleTimeout för Objektet SessionOption och Värdet IdleTimeout för variabeln $PSSessionOption ignoreras dock när det ansluter till en PSSession eller tar emot resultat.

  • Du kan ange och ändra tidsgränsen för inaktivitet för en PSSession när du skapar PSSessionen, med hjälp New-PSSession av cmdletarna eller Invoke-Command och när du kopplar från PSSessionen.
  • Egenskapen IdleTimeout för en PSSession är viktig för frånkopplade sessioner eftersom den avgör hur länge en frånkopplad session underhålls på fjärrdatorn. Frånkopplade sessioner anses vara inaktiva från den tidpunkt då de kopplas från, även om kommandon körs i den frånkopplade sessionen.

Om du startar ett jobb i en fjärrsession med hjälp av asjob-parametern för cmdleten Invoke-Command skapas jobbobjektet i den aktuella sessionen, även om jobbet körs i fjärrsessionen. Om du kopplar från fjärrsessionen kopplas jobbobjektet i den aktuella sessionen bort från jobbet. Jobbobjektet innehåller alla resultat som returnerades till det, men som inte får nya resultat från jobbet i den frånkopplade sessionen.

Om en annan klient ansluter till den session som innehåller det jobb som körs, är resultaten som levererades till det ursprungliga jobbobjektet i den ursprungliga sessionen inte tillgängliga i den nyligen anslutna sessionen. Endast resultat som inte levererades till det ursprungliga jobbobjektet är tillgängliga i den återanslutna sessionen.

Om du startar ett skript i en session och sedan kopplar från sessionen, är alla resultat som skriptet levererar till sessionen innan du kopplar från inte tillgängliga för en annan klient som ansluter till sessionen.

Om du vill förhindra dataförlust i sessioner som du tänker koppla från använder du parametern InDisconnectedSession för cmdleten Invoke-Command . Eftersom den här parametern förhindrar att resultat returneras till den aktuella sessionen är alla resultat tillgängliga när sessionen återansluts.

Du kan också förhindra dataförlust med hjälp av cmdleten Invoke-Command för att köra ett Start-Job kommando i fjärrsessionen. I det här fallet skapas jobbobjektet i fjärrsessionen. Du kan inte använda cmdleten Receive-PSSession för att hämta jobbresultatet. Använd i stället cmdleten Connect-PSSession för att ansluta till sessionen och använd sedan cmdleten Invoke-Command för att köra ett Receive-Job kommando i sessionen.

När en session som innehåller ett jobb som körs kopplas från och sedan återansluts återanvänds det ursprungliga jobbobjektet endast om jobbet är frånkopplat och återanslutet till samma session, och kommandot för att återansluta anger inte ett nytt jobbnamn. Om sessionen återansluts till en annan klientsession eller ett nytt jobbnamn anges skapar PowerShell ett nytt jobbobjekt för den nya sessionen.

När du kopplar från en PSSession är sessionstillståndet Frånkopplat och tillgängligheten är Ingen.

  • Värdet för egenskapen State är relativt till den aktuella sessionen. Värdet Frånkopplad innebär att PSSession inte är ansluten till den aktuella sessionen. Det betyder dock inte att PSSession är frånkopplad från alla sessioner. Den kan vara ansluten till en annan session. Om du vill ta reda på om du kan ansluta eller återansluta till sessionen använder du egenskapen Tillgänglighet .
  • Tillgänglighetsvärdet Ingen anger att du kan ansluta till sessionen. Värdet Upptagen anger att du inte kan ansluta till PSSessionen eftersom den är ansluten till en annan session.
  • Mer information om värdena för egenskapen State för sessioner finns i RunspaceState.
  • Mer information om värdena för egenskapen Tillgänglighet för sessioner finns i RunspaceAvailability.