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

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 var frånkopplade 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 användaren som skapade sessionen.

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

Denna cmdlet introducerades i Windows PowerShell 3.0.

Exempel

Exempel 1: Återanslut till en session

PS C:\> 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 Öppnat och tillgängligheten är Tillgänglig, vilket indikerar att du kan köra kommandon i sessionen.

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

PS C:\> Get-PSSession

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


PS C:\> Get-PSSession | Disconnect-PSSession

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


PS C:\> 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 säkerhetskopieringssessionen på den lokala datorn. Tillståndet för sessionen är Öppnat och tillgängligheten är Tillgänglig.

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 säkerhetskopieringssessionen var frånkopplad. Sessionens tillstånd är frånkopplat och tillgängligheten är Ingen.

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 säkerhetskopieringssessionen återansluts. Tillståndet för sessionen är Öppnat och tillgängligheten är Tillgänglig.

Om du använder cmdleten Connect-PSSession på en session som inte är frånkopplad påverkar kommandot inte sessionen och 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 långvarigt 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 FilePath-parametern 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 Släpp 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 är klart låser administratören sin dator 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.

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

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

PS C:\> Disconnect-PSSession -Session $s -OutputBufferingMode Drop -IdleTimeoutSec 60*60*15

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

PS C:\> Get-PSSession -ComputerName Server01 -Name ITTask

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


PS C:\> $s = Connect-PSSession -ComputerName Server01 -Name ITTask


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

PS C:\> Invoke-Command -Session $s {Get-Job}

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

PS C:\> Invoke-Command -Session $s {$BackupSpecs = Receive-Job -JobName Job2}

PS C:\> Invoke-Command -Session $s {\\Server30\Scripts\New-SQLDatabase.ps1 -InitData $BackupSpecs.Initialization}

PS C:\> 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 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 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 MaximumConnectionRedirectionCountfö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 programnamnsegmentet för anslutnings-URI:n. I följande anslutnings-URI är till exempel programnamnet WSMan: https://localhost:5985/WSMAN. Programnamnet för en session lagras i egenskapen Runspace.ConnectionInfo.AppName för sessionen.

Värdet för den här parametern används för att välja och filtrera sessioner. Det ändrar inte det program 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:

  • 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 användarens autentiseringsuppgifter skickas till en fjärrdator som ska autentiseras, är utformad för kommandon som kräver autentisering på fler ä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 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. De kan endast mappas till lokala användarkonton. De fungerar inte med domänkonton.

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

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

-ComputerName

Anger på vilka datorer de frånkopplade sessionerna lagras. Sessioner lagras på den dator som är 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 på en dator. Jokertecken tillåts inte. Om du vill ange den lokala datorn skriver du datornamnet, localhost eller en punkt (.)

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

-ConfigurationName

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.

Värdet för den här parametern 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 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:

https://localhost:5985/WSMAN

Om du inte anger någon 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 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: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 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:n för de frånkopplade sessionerna. 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: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 det. 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 frånkopplade sessioner. 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 det 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

-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 värdet 0 används standardvärdet 32.

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

Type:Int32
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. Parametern 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, 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

  • 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 den 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 i förhållande 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 Uppräkning av RunspaceAvailability.

  • Du kan inte ändra tidsgränsvärdet för inaktivitet för en PSSession när du ansluter till PSSession. Parametern Connect-PSSessionSessionOption för 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 det ögonblick då de kopplas från, även om kommandon körs i den frånkopplade sessionen.