Disconnect-PSSession
Kopplar från en session.
Syntax
Disconnect-PSSession
[-Session] <PSSession[]>
[-IdleTimeoutSec <Int32>]
[-OutputBufferingMode <OutputBufferingMode>]
[-ThrottleLimit <Int32>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Disconnect-PSSession
[-IdleTimeoutSec <Int32>]
[-OutputBufferingMode <OutputBufferingMode>]
[-ThrottleLimit <Int32>]
-Name <String[]>
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Disconnect-PSSession
[-IdleTimeoutSec <Int32>]
[-OutputBufferingMode <OutputBufferingMode>]
[-ThrottleLimit <Int32>]
-InstanceId <Guid[]>
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Disconnect-PSSession
[-IdleTimeoutSec <Int32>]
[-OutputBufferingMode <OutputBufferingMode>]
[-ThrottleLimit <Int32>]
[-Id] <Int32[]>
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Description
Cmdleten Disconnect-PSSession
kopplar från en PowerShell-session (PSSession), till exempel en som startades med hjälp av cmdleten New-PSSession
, från den aktuella sessionen. Därför är PSSession i ett frånkopplat tillstånd. Du kan ansluta till den frånkopplade PSSessionen från den aktuella sessionen eller från en annan session på den lokala datorn eller en annan dator.
Cmdleten Disconnect-PSSession
kopplar endast från öppna PSSessioner som är anslutna till den aktuella sessionen. Disconnect-PSSession
kan inte koppla från trasiga eller stängda PSSessioner eller interaktiva PSSessioner som startas med hjälp av cmdleten Enter-PSSession
, och det kan inte koppla från PSSessioner som är anslutna till andra sessioner.
Om du vill återansluta till en frånkopplad PSSession använder du Connect-PSSession
cmdletarna eller Receive-PSSession
.
När en PSSession är frånkopplad fortsätter kommandona i PSSession att köras tills de har slutförts, såvida inte PSSession överskrider tidsgränsen eller kommandona i PSSession blockeras av en fullständig utdatabuffert. Om du vill ändra tidsgränsen för inaktivitet använder du parametern IdleTimeoutSec . Om du vill ändra utdatabuffertningsläget använder du parametern OutputBufferingMode Du kan också använda parametern InDisconnectedSession för cmdleten Invoke-Command
för att köra ett kommando i en frånkopplad session.
Mer information om funktionen Frånkopplade sessioner finns i about_Remote_Disconnected_Sessions.
Den här cmdleten introduceras i Windows PowerShell 3.0.
Exempel
Exempel 1 – Koppla från en session efter namn
Det här kommandot kopplar från UpdateSession
PSSession på Server01-datorn från den aktuella sessionen. Kommandot använder parametern Namn för att identifiera PSSession.
PS> Disconnect-PSSession -Name UpdateSession
Id Name ComputerName State ConfigurationName Availability
-- ---- ------------ ----- ----------------- ------------
1 UpdateSession Server01 Disconnected Microsoft.PowerShell None
Utdata visar att försöket att koppla från lyckades. Sessionstillståndet är Disconnected
och tillgängligheten är None
, vilket indikerar att sessionen inte är upptagen och kan återanslutas.
Exempel 2 – Koppla från en session från en specifik dator
Det här kommandot kopplar från ITTask
PSSession på Server12-datorn från den aktuella sessionen. Sessionen ITTask
skapades i den aktuella sessionen och ansluter till Server12-datorn. Kommandot använder cmdleten Get-PSSession
för att hämta sessionen och cmdleten Disconnect-PSSession
för att koppla från den.
PS> Get-PSSession -ComputerName Server12 -Name ITTask |
Disconnect-PSSession -OutputBufferingMode Drop -IdleTimeoutSec 86400
Id Name ComputerName State ConfigurationName Availability
-- ---- ------------ ----- ----------------- ------------
1 ITTask Server12 Disconnected ITTasks None
Kommandot Disconnect-PSSession
använder parametern OutputBufferingMode för att ange utdataläget till Drop
. Den här inställningen säkerställer att skriptet som körs i sessionen kan fortsätta att köras även om sessionsutdatabufferten är full. Eftersom skriptet skriver utdata till en rapport på en filresurs kan andra utdata gå förlorade utan konsekvens.
Kommandot använder också parametern IdleTimeoutSec för att utöka tidsgränsen för inaktivitet för sessionen till 24 timmar. Med den här inställningen kan administratören eller andra administratörer återansluta till sessionen för att kontrollera att skriptet kördes och felsökas om det behövs.
Exempel 3 – Använda flera PSSessioner på flera datorer
Den här serien med kommandon visar hur cmdleten Disconnect-PSSession
kan användas i ett företagsscenario. I det här fallet startar en ny tekniker ett skript i en session på en fjärrdator och stöter på ett problem. Teknikern kopplar från sessionen så att en mer erfaren chef kan ansluta till sessionen och lösa problemet.
PS> $s = New-PSSession -ComputerName Srv1, Srv2, Srv30 -Name ITTask
PS> Invoke-Command $s -FilePath \\Server01\Scripts\Get-PatchStatus.ps1
PS> Get-PSSession -Name ITTask -ComputerName Srv1 | Disconnect-PSSession
Id Name ComputerName State ConfigurationName Availability
-- ---- ------------ ----- ----------------- ------------
1 ITTask Srv1 Disconnected Microsoft.PowerShell None
PS> Get-PSSession -ComputerName Srv1, Srv2, Srv30 -Name ITTask
Id Name ComputerName State ConfigurationName Availability
-- ---- ------------ ----- ----------------- ------------
1 ITTask Srv1 Disconnected Microsoft.PowerShell None
2 ITTask Srv2 Opened Microsoft.PowerShell Available
3 ITTask Srv30 Opened Microsoft.PowerShell Available
PS> Get-PSSession -ComputerName Srv1 -Name ITTask -Credential Domain01\User01
Id Name ComputerName State ConfigurationName Availability
-- ---- ------------ ----- ----------------- ------------
1 ITTask Srv1 Disconnected Microsoft.PowerShell None
PS> $s = Connect-PSSession -ComputerName Srv1 -Name ITTask -Credential Domain01\User01
PS> Invoke-Command -Session $s {dir $HOME\Scripts\PatchStatusOutput.ps1}
PS> Invoke-Command -Session $s {mkdir $HOME\Scripts\PatchStatusOutput}
PS> Invoke-Command -Session $s -FilePath \\Server01\Scripts\Get-PatchStatus.ps1
PS> Disconnect-PSSession -Session $s
Teknikern börjar med att skapa sessioner på flera fjärrdatorer och köra ett skript i varje session. Det första kommandot använder cmdleten New-PSSession
ITTask
för att skapa sessionen på tre fjärrdatorer. Kommandot sparar sessionerna i variabeln $s
. Det andra kommandot använder parametern FilePath för cmdleten Invoke-Command
för att köra ett skript i sessionerna i variabeln $s
.
Skriptet som körs på Srv1-datorn genererar oväntade fel. Teknikern kontaktar sin chef och ber om hjälp. Chefen instruerar teknikern att koppla från sessionen så att han kan undersöka saken. Det andra kommandot använder cmdleten Get-PSSession
ITTask
för att hämta sessionen på Srv1-datorn och cmdleten Disconnect-PSSession
för att koppla från den. Det här kommandot påverkar inte sessionerna ITTask
på de andra datorerna.
Det tredje kommandot använder cmdleten Get-PSSession
för att hämta sessionerna ITTask
. Utdata visar att sessionerna ITTask
på datorerna Srv2 och Srv30 inte påverkades av kommandot för att koppla från.
Chefen loggar in på sin hemdator, ansluter till sitt företagsnätverk, startar PowerShell och använder cmdleten Get-PSSession
ITTask
för att hämta sessionen på Srv1-datorn. Han använder teknikerns autentiseringsuppgifter för att komma åt sessionen.
Därefter använder chefen cmdleten Connect-PSSession
för att ansluta till ITTask
sessionen på Srv1-datorn. Kommandot sparar sessionen i variabeln $s
.
Chefen använder cmdleten Invoke-Command
för att köra några diagnostikkommandon i sessionen i variabeln $s
. Han inser att skriptet misslyckades eftersom det inte hittade någon nödvändig katalog.
Chefen använder MkDir
funktionen för att skapa katalogen och startar sedan om skriptet Get-PatchStatus.ps1
och kopplar från sessionen. Chefen rapporterar sina resultat till teknikern, föreslår att han återansluter till sessionen för att slutföra uppgifterna och ber honom att lägga till ett kommando i skriptet Get-PatchStatus.ps1
som skapar den nödvändiga katalogen om den inte finns.
Exempel 4 – Ändra tidsgränsvärdet för en PSSession
Det här exemplet visar hur du korrigerar värdet för egenskapen IdleTimeout för en session så att den kan kopplas från.
Den inaktiva timeout-egenskapen för en session är viktig för frånkopplade sessioner, eftersom den avgör hur länge en frånkopplad session underhålls innan den tas bort. Du kan ange timeout-alternativet för inaktivitet när du skapar en session och när du kopplar från den. Standardvärdena för tidsgränsen för inaktivitet för en session anges i $PSSessionOption
inställningsvariabeln på den lokala datorn och i sessionskonfigurationen på fjärrdatorn. Värden som anges för sessionen har företräde framför värden som anges i sessionskonfigurationen, men sessionsvärden får inte överskrida kvoter som angetts i sessionskonfigurationen, till exempel värdet MaxIdleTimeoutMs .
PS> $Timeout = New-PSSessionOption -IdleTimeout 172800000
PS> $s = New-PSSession -Computer Server01 -Name ITTask -SessionOption $Timeout
PS> Disconnect-PSSession -Session $s
Disconnect-PSSession : The session ITTask cannot be disconnected because the specified
idle timeout value 172800(seconds) is either greater than the server maximum allowed
43200 (seconds) or less that the minimum allowed60(seconds). Choose an idle time out
value that is within the allowed range and try again.
PS> Invoke-Command -ComputerName Server01 {Get-PSSessionConfiguration Microsoft.PowerShell} |
Format-List -Property *
Architecture : 64
Filename : %windir%\system32\pwrshplugin.dll
ResourceUri : http://schemas.microsoft.com/powershell/microsoft.powershell
MaxConcurrentCommandsPerShell : 1000
UseSharedProcess : false
ProcessIdleTimeoutSec : 0
xmlns : http://schemas.microsoft.com/wbem/wsman/1/config/PluginConfiguration
MaxConcurrentUsers : 5
lang : en-US
SupportsOptions : true
ExactMatch : true
RunAsUser :
IdleTimeoutms : 7200000
PSVersion : 3.0
OutputBufferingMode : Block
AutoRestart : false
SecurityDescriptorSddl : O:NSG:BAD:P(A;;GA;;;BA)S:P(AU;FA;GA;;;WD)(AU;SA;GXGW;;;WD)
MaxMemoryPerShellMB : 1024
MaxIdleTimeoutms : 2147483647
Uri : http://schemas.microsoft.com/powershell/microsoft.powershell
SDKVersion : 2
Name : microsoft.powershell
XmlRenderingType : text
Capability : {Shell}
RunAsPassword :
MaxProcessesPerShell : 15
ParentResourceUri : http://schemas.microsoft.com/powershell/microsoft.powershell
Enabled : true
MaxShells : 25
MaxShellsPerUser : 25
Permission : BUILTIN\Administrators AccessAllowed
PSComputerName : localhost
RunspaceId : aea84310-6dbf-4c21-90ac-13980039925a
PSShowComputerName : True
PS> $s.Runspace.ConnectionInfo
ConnectionUri : http://Server01/wsman
ComputerName : Server01
Scheme : http
Port : 80
AppName : /wsman
Credential :
ShellUri : http://schemas.microsoft.com/powershell/Microsoft.PowerShell
AuthenticationMechanism : Default
CertificateThumbprint :
MaximumConnectionRedirectionCount : 5
MaximumReceivedDataSizePerCommand :
MaximumReceivedObjectSize : 209715200
UseCompression : True
NoMachineProfile : False
ProxyAccessType : None
ProxyAuthentication : Negotiate
ProxyCredential :
SkipCACheck : False
SkipCNCheck : False
SkipRevocationCheck : False
NoEncryption : False
UseUTF16 : False
OutputBufferingMode : Drop
IncludePortInSPN : False
Culture : en-US
UICulture : en-US
OpenTimeout : 180000
CancelTimeout : 60000
OperationTimeout : 180000
IdleTimeout : 172800000
PS> Disconnect-PSSession $s -IdleTimeoutSec 43200
Id Name ComputerName State ConfigurationName Availability
-- ---- ------------ ----- ----------------- ------------
4 ITTask Server01 Disconnected Microsoft.PowerShell None
PS> $s.Runspace.ConnectionInfo.IdleTimeout
43200000
Det första kommandot använder cmdleten New-PSSessionOption
för att skapa ett sessionsalternativobjekt. Den använder parametern IdleTimeout för att ange en tidsgräns för inaktivitet på 48 timmar (172800000
millisekunder). Kommandot sparar sessionsalternativobjektet i variabeln $Timeout
.
Det andra kommandot använder cmdleten New-PSSession
ITTask
för att skapa sessionen på Server01-datorn. Kommandot sparar sessionen i variabeln $s
. Värdet för parametern SessionOption är tidsgränsen på 48 timmar för inaktivitet i variabeln $Timeout
.
Det tredje kommandot kopplar från ITTask
sessionen i variabeln $s
. Kommandot misslyckas eftersom tidsgränsvärdet för inaktivitet för sessionen överskrider MaxIdleTimeoutMs-kvoten i sessionskonfigurationen. Eftersom tidsgränsen för inaktivitet inte används förrän sessionen är frånkopplad kan den här överträdelsen inte identifieras när sessionen används.
Det fjärde kommandot använder cmdleten Invoke-Command
för att köra ett Get-PSSessionConfiguration
kommando för Microsoft.PowerShell
sessionskonfigurationen på Server01-datorn. Kommandot använder cmdleten Format-List
för att visa alla egenskaper för sessionskonfigurationen i en lista. Utdata visar att egenskapen MaxIdleTimeoutMS , som upprättar det högsta tillåtna IdleTimeout-värdet för sessioner som använder sessionskonfigurationen, är 43200000
millisekunder (12 timmar).
Det femte kommandot hämtar sessionsalternativvärdena för sessionen i variabeln $s
. Värdena för många sessionsalternativ är egenskaper för egenskapen ConnectionInfo för runspace-egenskapen för sessionen. Utdata visar att värdet för egenskapen IdleTimeout för sessionen är 172800000
millisekunder (48 timmar), vilket strider mot MaxIdleTimeoutMs-kvoten på 12 timmar i sessionskonfigurationen. För att lösa den här konflikten kan du använda parametern ConfigurationName för att välja en annan sessionskonfiguration eller använda parametern IdleTimeout för att minska tidsgränsen för inaktivitet för sessionen.
Det sjätte kommandot kopplar från sessionen. Den använder parametern IdleTimeoutSec för att ange tidsgränsen för inaktivitet till maximalt 12 timmar.
Det sjunde kommandot hämtar värdet för egenskapen IdleTimeout för den frånkopplade sessionen, som mäts i millisekunder. Utdata bekräftar att kommandot lyckades.
Parametrar
-Confirm
Uppmanar dig att bekräfta innan du kör cmdleten.
Typ: | SwitchParameter |
Alias: | cf |
Position: | Named |
Standardvärde: | False |
Obligatorisk: | False |
Godkänn pipeline-indata: | False |
Godkänn jokertecken: | False |
-Id
Kopplar från sessioner med det angivna sessions-ID:t. Ange ett eller flera ID:t (avgränsade med kommatecken) eller använd intervalloperatorn (..
) för att ange ett intervall med ID:er.
Använd cmdleten för att hämta ID:t för Get-PSSession
en session. Instans-ID:t lagras i ID-egenskapen för sessionen.
Typ: | Int32[] |
Position: | 1 |
Standardvärde: | None |
Obligatorisk: | True |
Godkänn pipeline-indata: | True |
Godkänn jokertecken: | False |
-IdleTimeoutSec
Ändrar timeout-värdet för inaktivt läge för den frånkopplade PSSessionen. Ange ett värde i sekunder. Minimivärdet är 60
(1 minut).
Tidsgränsen för inaktivitet avgör hur länge den frånkopplade PSSessionen underhålls på fjärrdatorn. När tidsgränsen upphör att gälla tas PSSession bort.
Frånkopplade PSSessioner anses vara inaktiva från det ögonblick då de kopplas från, även om kommandon körs i den frånkopplade sessionen.
Standardvärdet för tidsgränsen för inaktivitet för en session anges av värdet för egenskapen IdleTimeoutMs för sessionskonfigurationen. Standardvärdet är 7200000
millisekunder (2 timmar).
Värdet för den här parametern har företräde framför värdet för egenskapen IdleTimeout för $PSSessionOption
inställningsvariabeln och standardvärdet för timeout för inaktivitet i sessionskonfigurationen. Det här värdet får dock inte överskrida värdet för egenskapen MaxIdleTimeoutMs för sessionskonfigurationen. Standardvärdet för MaxIdleTimeoutMs är 12 timmar (43200000
millisekunder).
Typ: | Int32 |
Position: | Named |
Standardvärde: | 60 |
Obligatorisk: | False |
Godkänn pipeline-indata: | False |
Godkänn jokertecken: | False |
-InstanceId
Kopplar från sessioner med angivna instans-ID:n.
Instans-ID:t är ett GUID som unikt identifierar en session på en lokal eller fjärransluten dator. Instans-ID:t är unikt, även över flera sessioner på flera datorer.
Använd cmdleten för att hämta instans-ID:t för Get-PSSession
en session. Instans-ID:t lagras i egenskapen InstanceID för sessionen.
Typ: | Guid[] |
Position: | Named |
Standardvärde: | None |
Obligatorisk: | True |
Godkänn pipeline-indata: | True |
Godkänn jokertecken: | False |
-Name
Kopplar från sessioner med de angivna egna namnen. Jokertecken tillåts.
Använd cmdleten Get-PSSession
för att hämta det egna namnet på en session. Det egna namnet lagras i egenskapen Namn för sessionen.
Typ: | String[] |
Position: | Named |
Standardvärde: | None |
Obligatorisk: | True |
Godkänn pipeline-indata: | True |
Godkänn jokertecken: | True |
-OutputBufferingMode
Avgör hur kommandoutdata hanteras i den frånkopplade sessionen när utdatabufferten är full. Standardvärdet är Block
.
Om kommandot i den frånkopplade sessionen returnerar utdata och utdatabufferten fylls avgör värdet för den här parametern effektivt om kommandot fortsätter att köras medan sessionen är frånkopplad. Värdet Block
pausar kommandot tills sessionen återansluts. Värdet Drop
tillåter att kommandot slutförs, även om data kan gå förlorade. När du använder värdet Drop
omdirigerar du kommandoutdata till en fil på disken.
Giltiga värden är:
Block
: När utdatabufferten är full pausas körningen tills bufferten är klar.Drop
: När utdatabufferten är full fortsätter körningen. När nya utdata sparas ignoreras de äldsta utdata.None
: Inget utdatabuffertningsläge har angetts. Värdet för egenskapen OutputBufferingMode för sessionskonfigurationen används för den frånkopplade sessionen.
Typ: | OutputBufferingMode |
Position: | Named |
Standardvärde: | Block |
Obligatorisk: | False |
Godkänn pipeline-indata: | False |
Godkänn jokertecken: | False |
-Session
Kopplar från de angivna PSSessionerna. Ange PSSession-objekt , till exempel de som cmdleten New-PSSession
returnerar. Du kan också skicka ett PSSession-objekt till Disconnect-PSSession
.
Cmdleten Get-PSSession
kan hämta alla PSSessioner som avslutas på en fjärrdator, inklusive PSSessioner som är frånkopplade och PSSessioner som är anslutna till andra sessioner på andra datorer. Disconnect-PSSession
kopplar endast från PSSession som är anslutna till den aktuella sessionen. Om du skicka andra PSSessioner till Disconnect-PSSession
misslyckas Disconnect-PSSession
kommandot.
Typ: | PSSession[] |
Position: | 1 |
Standardvärde: | None |
Obligatorisk: | True |
Godkänn pipeline-indata: | True |
Godkänn jokertecken: | False |
-ThrottleLimit
Anger begränsningsgränsen för Disconnect-PSSession
kommandot.
Begränsningsgränsen är 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 0
används standardvärdet , 32
.
Begränsningsgränsen gäller endast för det aktuella kommandot, inte för sessionen eller på datorn.
Typ: | Int32 |
Position: | Named |
Standardvärde: | 32 |
Obligatorisk: | False |
Godkänn pipeline-indata: | False |
Godkänn jokertecken: | False |
-WhatIf
Visar vad som skulle hända om cmdleten kördes. Cmdleten körs inte.
Typ: | SwitchParameter |
Alias: | wi |
Position: | Named |
Standardvärde: | False |
Obligatorisk: | False |
Godkänn pipeline-indata: | False |
Godkänn jokertecken: | False |
Indata
Du kan skicka en session till den här cmdleten.
Utdata
Den här cmdleten returnerar ett objekt som representerar den session som den kopplade från.
Kommentarer
Windows PowerShell innehåller följande alias för Disconnect-PSSession
:
dnsn
Cmdleten
Disconnect-PSSession
fungerar bara när de lokala datorerna och fjärrdatorerna kör PowerShell 3.0 eller senare.Om du använder cmdleten
Disconnect-PSSession
i en frånkopplad session har kommandot ingen effekt på sessionen och den genererar inga fel.Frånkopplade loopback-sessioner med interaktiva säkerhetstoken (de som skapats med parametern EnableNetworkAccess ) kan endast återanslutas från den dator där sessionen skapades. Den här begränsningen skyddar datorn från skadlig åtkomst.
När du kopplar från en PSSession är
Disconnected
sessionstillståndet och tillgängligheten är Ingen.Värdet för egenskapen State är relativt till den aktuella sessionen. Därför innebär värdet
Disconnected
för 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
None
för anger att du kan ansluta till sessionen. VärdetBusy
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.