Connect-PSSession

Återansluter till frånkopplade sessioner.

Syntax

Connect-PSSession
       -Name <String[]>
       [-ThrottleLimit <Int32>]
       [-WhatIf]
       [-Confirm]
       [<CommonParameters>]
Connect-PSSession
       [-Session] <PSSession[]>
       [-ThrottleLimit <Int32>]
       [-WhatIf]
       [-Confirm]
       [<CommonParameters>]
Connect-PSSession
       -ComputerName <String[]>
       [-ApplicationName <String>]
       [-ConfigurationName <String>]
       -InstanceId <Guid[]>
       [-Credential <PSCredential>]
       [-Authentication <AuthenticationMechanism>]
       [-CertificateThumbprint <String>]
       [-Port <Int32>]
       [-UseSSL]
       [-SessionOption <PSSessionOption>]
       [-ThrottleLimit <Int32>]
       [-WhatIf]
       [-Confirm]
       [<CommonParameters>]
Connect-PSSession
       -ComputerName <String[]>
       [-ApplicationName <String>]
       [-ConfigurationName <String>]
       [-Name <String[]>]
       [-Credential <PSCredential>]
       [-Authentication <AuthenticationMechanism>]
       [-CertificateThumbprint <String>]
       [-Port <Int32>]
       [-UseSSL]
       [-SessionOption <PSSessionOption>]
       [-ThrottleLimit <Int32>]
       [-WhatIf]
       [-Confirm]
       [<CommonParameters>]
Connect-PSSession
       [-ConfigurationName <String>]
       [-ConnectionUri] <Uri[]>
       [-AllowRedirection]
       -InstanceId <Guid[]>
       [-Credential <PSCredential>]
       [-Authentication <AuthenticationMechanism>]
       [-CertificateThumbprint <String>]
       [-SessionOption <PSSessionOption>]
       [-ThrottleLimit <Int32>]
       [-WhatIf]
       [-Confirm]
       [<CommonParameters>]
Connect-PSSession
       [-ConfigurationName <String>]
       [-ConnectionUri] <Uri[]>
       [-AllowRedirection]
       [-Name <String[]>]
       [-Credential <PSCredential>]
       [-Authentication <AuthenticationMechanism>]
       [-CertificateThumbprint <String>]
       [-SessionOption <PSSessionOption>]
       [-ThrottleLimit <Int32>]
       [-WhatIf]
       [-Confirm]
       [<CommonParameters>]
Connect-PSSession
       -InstanceId <Guid[]>
       [-ThrottleLimit <Int32>]
       [-WhatIf]
       [-Confirm]
       [<CommonParameters>]
Connect-PSSession
       [-ThrottleLimit <Int32>]
       [-Id] <Int32[]>
       [-WhatIf]
       [-Confirm]
       [<CommonParameters>]

Description

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

Cmdleten Connect-PSSession återansluter till användarhanterade PowerShell-sessioner (PSSessioner) som var frånkopplade. Det fungerar på sessioner som kopplas från avsiktligt, till exempel genom att använda cmdleten Disconnect-PSSession eller parametern InDisconnectedSession för cmdleten Invoke-Command och de som inte har kopplats från oavsiktligt, till exempel av ett tillfälligt nätverksavbrott.

Connect-PSSession kan ansluta till alla frånkopplade sessioner som startades av samma användare. Dessa inkluderar de som startades av eller kopplades från andra sessioner på andra datorer.

Det går dock Connect-PSSession inte att ansluta till brutna eller stängda sessioner eller interaktiva sessioner som startas med hjälp av cmdleten Enter-PSSession . Du kan inte heller ansluta sessioner till sessioner som startats av andra användare, såvida du inte kan ange autentiseringsuppgifterna för den användare som skapade sessionen.

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

Den här cmdleten introducerades i Windows PowerShell 3.0.

Exempel

Exempel 1: Återansluta till en session

Connect-PSSession -ComputerName Server01 -Name ITTask

Id Name            ComputerName    State         ConfigurationName     Availability
-- ----            ------------    -----         -----------------     ------------
 4 ITTask          Server01        Opened        ITTasks                  Available

Det här kommandot återansluter till ITTask sessionen på Server01-datorn.

Utdata visar att kommandot lyckades. Tillståndet för sessionen är Opened och tillgängligheten är Available, vilket anger att du kan köra kommandon i sessionen.

Exempel 2: Effekten av att koppla från och återansluta

Get-PSSession

Id Name            ComputerName    State         ConfigurationName     Availability
-- ----            ------------    -----         -----------------     ------------
 1 Backups         Localhost       Opened        Microsoft.PowerShell     Available

Get-PSSession | Disconnect-PSSession

Id Name            ComputerName    State         ConfigurationName     Availability
-- ----            ------------    -----         -----------------     ------------
 1 Backups         Localhost       Disconnected  Microsoft.PowerShell          None

Get-PSSession | Connect-PSSession

Id Name            ComputerName    State         ConfigurationName     Availability
-- ----            ------------    -----         -----------------     ------------
 1 Backups         Localhost       Opened        Microsoft.PowerShell     Available

Det här exemplet visar effekten av att koppla från och sedan återansluta till en session.

Det första kommandot använder cmdleten Get-PSSession . Utan parametern ComputerName hämtar kommandot endast sessioner som skapades i den aktuella sessionen.

Utdata visar att kommandot hämtar Backups sessionen på den lokala datorn. Tillståndet för sessionen är Opened och tillgängligheten är Available.

Det andra kommandot använder cmdleten Get-PSSession för att hämta PSSession-objekten som skapades i den aktuella sessionen och cmdleten Disconnect-PSSession för att koppla från sessionerna. Utdata visar att Backups sessionen var frånkopplad. Tillståndet för sessionen är Disconnected och tillgängligheten är None.

Det tredje kommandot använder cmdleten Get-PSSession för att hämta PSSession-objekten som skapades i den aktuella sessionen och cmdleten Connect-PSSession för att återansluta sessionerna. Utdata visar att Backups sessionen återansluts. Tillståndet för sessionen är Opened och tillgängligheten är Available.

Om du använder cmdleten Connect-PSSession på en session som inte är frånkopplad påverkar kommandot inte sessionen och den genererar inga fel.

Exempel 3: Serie med kommandon i ett företagsscenario

Den här serien med kommandon visar hur cmdleten Connect-PSSession kan användas i ett företagsscenario. I det här fallet startar en systemadministratör ett tidskrävande jobb i en session på en fjärrdator. När du har startat jobbet kopplar administratören från sessionen och går hem. Senare på kvällen loggar administratören in på sin hemdator och verifierar att jobbet kördes tills det har slutförts.

Administratören börjar med att skapa sessioner på en fjärrdator och köra ett skript i sessionen. Det första kommandot använder cmdleten New-PSSession för att skapa ITTask sessionen på server01-fjärrdatorn. Kommandot använder parametern ConfigurationName för att ange ITTasks sessionskonfigurationen. Kommandot sparar sessionerna i variabeln $s .

Den andra kommando-cmdleten Invoke-Command för att starta ett bakgrundsjobb i sessionen i variabeln $s . Den använder Parametern FilePath för att köra skriptet i bakgrundsjobbet.

Det tredje kommandot använder cmdleten Disconnect-PSSession för att koppla från sessionen i variabeln $s . Kommandot använder parametern OutputBufferingMode med värdet Drop för för att förhindra att skriptet blockeras genom att behöva leverera utdata till sessionen. Den använder parametern IdleTimeoutSec för att utöka tidsgränsen för sessionen till 15 timmar. När kommandot har slutförts låser administratören datorn och går hem för kvällen.

Senare på kvällen startar administratören sin hemdator, loggar in på företagsnätverket och startar PowerShell. Det fjärde kommandot använder cmdleten Get-PSSession för att hämta sessionerna på Server01-datorn. Kommandot hittar ITTask sessionen. Det femte kommandot använder cmdleten Connect-PSSession för att ansluta till ITTask sessionen. Kommandot sparar sessionen i variabeln $s .

Det sjätte kommandot använder cmdleten Invoke-Command för att köra ett Get-Job kommando i sessionen i variabeln $s . Utdata visar att jobbet har slutförts. Det sjunde kommandot använder cmdleten Invoke-Command för att köra ett Receive-Job kommando i sessionen i variabeln $s i sessionen. Kommandot sparar resultatet i variabeln $BackupSpecs . Det åttonde kommandot använder cmdleten Invoke-Command för att köra ett annat skript i sessionen. Kommandot använder värdet för variabeln $BackupSpecs i sessionen som indata till skriptet.

$s = New-PSSession -ComputerName Server01 -Name ITTask -ConfigurationName ITTasks
Invoke-Command -Session $s -ScriptBlock {Start-Job -FilePath \\Server30\Scripts\Backup-SQLDatabase.ps1}

Id     Name            State         HasMoreData     Location             Command
--     ----            -----         -----------     --------             -------
2      Job2            Running       True            Server01             \\Server30\Scripts\Backup...

Disconnect-PSSession -Session $s -OutputBufferingMode Drop -IdleTimeoutSec 60*60*15

Id Name            ComputerName    State         ConfigurationName     Availability
-- ----            ------------    -----         -----------------     ------------
 1 ITTask          Server01        Disconnected  ITTasks               None

Get-PSSession -ComputerName Server01 -Name ITTask

Id Name            ComputerName    State         ConfigurationName     Availability
-- ----            ------------    -----         -----------------     ------------
 1 ITTask          Server01        Disconnected  ITTasks               None

$s = Connect-PSSession -ComputerName Server01 -Name ITTask

Id Name            ComputerName    State         ConfigurationName     Availability
-- ----            ------------    -----         -----------------     ------------
 1 ITTask          Server01        Opened        ITTasks               Available

Invoke-Command -Session $s -ScriptBlock {Get-Job}

Id     Name            State         HasMoreData     Location             Command
--     ----            -----         -----------     --------             -------
2      Job2            Completed     True            Server01             \\Server30\Scripts\Backup...

Invoke-Command -Session $s -ScriptBlock {$BackupSpecs = Receive-Job -JobName Job2}
Invoke-Command -Session $s -ScriptBlock {\\Server30\Scripts\New-SQLDatabase.ps1 -InitData $BackupSpecs.Initialization}
Disconnect-PSSession -Session $s -OutputBufferingMode Drop -IdleTimeoutSec 60*60*15

Id Name            ComputerName    State         ConfigurationName     Availability
-- ----            ------------    -----         -----------------     ------------
 1 ITTask          Server01        Disconnected  ITTasks               None

Det nionde kommandot kopplar från sessionen i variabeln $s . Administratören stänger PowerShell och stänger datorn. Hon kan återansluta till sessionen nästa dag och kontrollera skriptstatusen från arbetsdatorn.

Parametrar

-AllowRedirection

Anger att denna cmdlet tillåter omdirigering av den här anslutningen till en alternativ URI.

När du använder parametern Anslut ionURI 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 låta den omdirigera anslutningen.

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

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

-ApplicationName

Anger namnet på 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 till exempel programnamnet WSMan: http://localhost:5985/WSMAN. Programnamnet för en session lagras i Runspace.AnslutionInfo.AppName-egenskapen för sessionen.

Värdet för den här parametern används för att välja och filtrera sessioner. Det ändrar inte programmet som sessionen använder.

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ändarautentiseringsuppgifter i kommandot för att återansluta till den frånkopplade sessionen. De acceptabla värdena för den här parametern är:

  • Default
  • Basic
  • Credssp
  • Digest
  • Kerberos
  • Negotiate
  • NegotiateWithImplicitCredential

Standardvärdet är Default.

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

Varning

CredSSP-autentisering (CredSSP), där användarens autentiseringsuppgifter 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:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-CertificateThumbprint

Anger det digitala offentliga nyckelcertifikatet (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. De kan endast mappas till lokala användarkonton. De 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 de datorer där de frånkopplade sessionerna lagras. Sessioner lagras på den dator som finns på serversidan eller tar emot en anslutning. Standard är den lokala datorn.

Ange NetBIOS-namnet, en IP-adress eller ett fullständigt domännamn på en dator. Jokertecken tillåts inte. Om du vill ange den lokala datorn skriver du datornamnet, localhosteller en punkt (.)

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

-ConfigurationName

Anslut endast till sessioner som använder den angivna sessionskonfigurationen.

Ange ett konfigurationsnamn eller den fullständigt kvalificerade resurs-URI:n för en sessionskonfiguration. Om du bara anger konfigurationsnamnet förbereds följande schema-URI: http://schemas.microsoft.com/powershell. Konfigurationsnamnet för en session lagras i configurationName-egenskapen för sessionen.

Värdet för den här parametern används för att välja och filtrera sessioner. Den ändrar inte sessionskonfigurationen som sessionen använder.

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 URI:er för anslutningsslutpunkterna för de frånkopplade sessionerna.

URI:n måste vara fullständigt kvalificerad. Formatet för den här strängen är följande:

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

Standardvärdet är följande:

http://localhost:5985/WSMAN

Om du inte anger en anslutnings-URI kan du använda parametrarna UseSSL och Port för att ange anslutnings-URI-värdena.

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 standardportar: 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 HTTPS.

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

Type:Uri[]
Aliases:URI, CU
Position:0
Default value:None
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 eller Domain01\User01, eller ange ett PSCredential-objekt som User01 genereras av cmdletenGet-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.

Kommentar

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

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

-Id

Anger ID:n för de frånkopplade sessionerna. Parametern ID 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:n för de frånkopplade sessionerna.

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

-Name

Anger de egna namnen på de frånkopplade sessionerna.

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

-Port

Anger nätverksporten på fjärrdatorn som används för att återansluta till sessionen. Om du vill ansluta till en fjärrdator måste fjärrdatorn 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å den 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 du inte måste. 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 de frånkopplade sessionerna. Ange en variabel som innehåller PSSession-objekten eller ett kommando som skapar eller hämtar PSSession-objekten, 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.

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

En beskrivning av sessionsalternativen som innehåller standardvärdena finns i New-PSSessionOption. Information om $PSSessionOption-inställningsvariabelnfinns 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

-ThrottleLimit

Anger det maximala antalet samtidiga anslutningar som kan upprättas för att köra det här kommandot. Om du utelämnar den här parametern eller anger ett värde för 0används standardvärdet , 32.

Begränsningsgränsen gäller endast för det aktuella kommandot, inte för sessionen eller på datorn.

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

-UseSSL

Anger att den här cmdleten 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. Parametern UseSSL är ett ytterligare skydd som skickar data över en HTTPS-anslutning i stället för en HTTP-anslutning.

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

Type:SwitchParameter
Position:Named
Default value:None
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 en session (PSSession) till den här cmdleten.

Utdata

PSSession

Den här cmdleten returnerar ett objekt som representerar den session som den återansluter till.

Kommentarer

PowerShell innehåller följande alias för Connect-PSSession:

  • Windows:

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

  • Connect-PSSession återansluter endast till sessioner som är frånkopplade, det vill säga sessioner som har värdet Frånkopplad för egenskapen State . Endast sessioner som är anslutna till eller slutar på datorer som kör Windows PowerShell 3.0 eller senare versioner kan kopplas från och återanslutas.

  • Om du använder Connect-PSSession en session som inte är frånkopplad påverkar kommandot inte sessionen och genererar inga fel.

  • Frånkopplade loopback-sessioner med interaktiva token, som skapas med hjälp av parametern EnableNetworkAccess , kan endast återanslutas från den dator där sessionen skapades. Den här begränsningen skyddar datorn från skadlig åtkomst.

  • Värdet för egenskapen State för en PSSession är relativ till den aktuella sessionen. Därför innebär värdet Frånkopplad att PSSession inte är ansluten till den aktuella sessionen. Det innebär dock inte att PSSession är frånkopplad från alla sessioner. Den kan vara ansluten till en annan session. Om du vill avgöra om du kan ansluta eller återansluta till sessionen använder du egenskapen Tillgänglighet .

    Ett tillgänglighetsvärde på Ingen anger att du kan ansluta till sessionen. Värdet Upptagen anger att du inte kan ansluta till PSSession eftersom den är ansluten till en annan session.

    Mer information om värdena för egenskapen State för sessioner finns i RunspaceState Enumeration.

    Mer information om värdena för egenskapen Tillgänglighet för sessioner finns i RunspaceAvailability Enumeration.

  • Du kan inte ändra tidsgränsvärdet för inaktivitet för en PSSession när du ansluter till PSSession. Parametern Connect-PSSession SessionOption 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 du ansluter till en PSSession.

    Du kan ange och ändra tidsgränsen för inaktivitet för en PSSession när du skapar PSSession, med hjälp New-PSSession av cmdletarna eller Invoke-Command och när du kopplar från PSSession.

    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.