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
Den här cmdleten är endast tillgänglig på Windows-plattformen.
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 PSSession 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 brutna eller stängda PSSessionereller interaktiva PSSessioner startas med hjälp av cmdleten Enter-PSSession
och kan inte koppla från PSSessioner som är anslutna till andra sessioner.
Om du vill återansluta till en frånkopplad PSSession-använder du cmdletarna Connect-PSSession
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 Name 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änglighet ä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. Den ITTask
sessionen 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 ställa in utdataläget på 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 den Disconnect-PSSession
cmdleten 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
för att skapa den ITTask
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
för att hämta ITTask
-sessionen på Srv1-datorn och cmdleten Disconnect-PSSession
för att koppla från den. Det här kommandot påverkar inte ITTask
sessioner på de andra datorerna.
Det tredje kommandot använder cmdleten Get-PSSession
för att hämta ITTask
sessioner. Utdata visar att de ITTask
sessionerna 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
för att hämta ITTask
-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 funktionen MkDir
för att skapa katalogen och startar sedan om Get-PatchStatus.ps1
skriptet 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 Get-PatchStatus.ps1
skriptet 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
för att skapa ITTask
-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 kvot 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 anger det högsta tillåtna värdet IdleTimeout för sessioner som använder sessionskonfigurationen, är 43200000
millisekunder (12 timmar).
Det femte kommandot hämtar sessionens sessionsalternativvärden i variabeln $s
. Värdena för många sessionsalternativ är egenskaper för egenskapen ConnectionInfo för egenskapen Runspace för sessionen. Utdata visar att värdet för IdleTimeout-egenskapen för sessionen är 172800000
millisekunder (48 timmar), vilket strider mot MaxIdleTimeoutMs kvot 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. Skriv ett eller flera ID:t (avgränsade med kommatecken) eller använd intervalloperatorn (..
) för att ange ett intervall med ID:er.
Om du vill hämta ID:t för en session använder du cmdleten Get-PSSession
. Instans-ID:t lagras i egenskapen ID för sessionen.
Typ: | Int32[] |
Position: | 1 |
Standardvärde: | None |
Obligatorisk: | True |
Godkänn pipeline-indata: | True |
Godkänn jokertecken: | False |
-IdleTimeoutSec
Ändrar timeoutvärdet för inaktivitet för den frånkopplade PSSession. 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 PSSession- 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 IdleTimeoutMs egenskapen 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 inaktiv timeout i sessionskonfigurationen. Det här värdet får dock inte överskrida värdet för MaxIdleTimeoutMs egenskap 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.
Om du vill hämta instans-ID:t för en session använder du cmdleten Get-PSSession
. 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.
Om du vill hämta det egna namnet på en session använder du cmdleten Get-PSSession
. Det egna namnet lagras i egenskapen Name 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. Med värdet Drop
kan kommandot slutföras, ä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 den angivna PSSessions. Ange PSSession- objekt, till exempel de som New-PSSession
cmdleten 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 andra
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 kommandot Disconnect-PSSession
.
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 värdet 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örs. 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 Disconnect-PSSession
.
Utdata
Disconnect-PSSession
returnerar ett objekt som representerar den session som den kopplade från.
Kommentarer
Den här cmdleten är endast tillgänglig på Windows-plattformar.
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 det 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 sessionstillståndet
Disconnected
och tillgängligheten är Ingen.Värdet för egenskapen State är relativ till den aktuella sessionen. Därför innebär värdet
Disconnected
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änglighet värdet för
None
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 Availability för sessioner finns i RunspaceAvailability Enumeration.