Disconnect-PSSession
Odpojí se od relace.
Syntaxe
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
Tato rutina je dostupná jenom na platformě Windows.
Rutina Disconnect-PSSession
odpojí relaci PowerShellu (PSSession), například relaci spuštěnou pomocí rutiny New-PSSession
, od aktuální relace. V důsledku toho je psSession v odpojeném stavu. Můžete se připojit k odpojené psSession z aktuální relace nebo z jiné relace v místním počítači nebo jiném počítači.
Rutina Disconnect-PSSession
odpojí pouze otevřené psSessions , které jsou připojené k aktuální relaci. Disconnect-PSSession
aplikace nemůže odpojit přerušené nebo uzavřené psSessions nebo interaktivní relace PSSessions spuštěné pomocí Enter-PSSession
rutiny a nemůže odpojit instance PSSession, které jsou připojené k jiným relacím.
Pokud se chcete znovu připojit k odpojené psSession, použijte rutinyConnect-PSSession
.Receive-PSSession
Při odpojení psSession příkazy v PSSession budou dál spouštět, dokud se nespustí časový limit psSession nebo příkazy v PSSession jsou blokovány úplnou výstupní vyrovnávací pamětí. Pokud chcete změnit časový limit nečinnosti, použijte parametr IdleTimeoutSec . Pokud chcete změnit režim ukládání výstupu do vyrovnávací paměti, použijte parametr OutputBufferingMode. K spuštění příkazu v odpojené relaci můžete použít také parametr Invoke-Command
InDisconnectedSession rutiny.
Další informace o funkci Odpojené relace najdete v tématu about_Remote_Disconnected_Sessions.
Tato rutina je zavedena ve Windows PowerShellu 3.0.
Příklady
Příklad 1 – Odpojení relace podle názvu
Tento příkaz odpojí UpdateSession
psSession na počítači Server01 od aktuální relace. Příkaz k identifikaci psSession používá parametr Name.
PS> Disconnect-PSSession -Name UpdateSession
Id Name ComputerName State ConfigurationName Availability
-- ---- ------------ ----- ----------------- ------------
1 UpdateSession Server01 Disconnected Microsoft.PowerShell None
Výstup ukazuje, že pokus o odpojení byl úspěšný. Stav relace je Disconnected
a dostupnost znamenáNone
, že relace není zaneprázdněná a lze ji znovu připojit.
Příklad 2 – Odpojení relace od konkrétního počítače
Tento příkaz odpojí ITTask
psSession na počítači Serveru12 od aktuální relace. Relace ITTask
byla vytvořena v aktuální relaci a připojuje se k počítači Se serverem 12. Příkaz pomocí rutiny Get-PSSession
získá relaci a rutinu Disconnect-PSSession
k odpojení.
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
Příkaz Disconnect-PSSession
používá OutputBufferingMode parametr k nastavení výstupního režimu na Drop
. Toto nastavení zajišťuje, že skript spuštěný v relaci může i nadále běžet i v případě, že je výstupní vyrovnávací paměť relace plná. Vzhledem k tomu, že skript zapíše výstup do sestavy sdílené složky, může dojít ke ztrátě jiného výstupu bez důsledku.
Příkaz také používá parametr IdleTimeoutSec k rozšíření časového limitu nečinnosti relace na 24 hodin. Toto nastavení umožňuje, aby se tento správce nebo jiní správci znovu připojili k relaci a ověřili, že skript běžel a v případě potřeby odstraňoval potíže.
Příklad 3 – Použití více instancí PSSession na více počítačích
Tato série příkazů ukazuje, jak se rutina Disconnect-PSSession
může používat v podnikovém scénáři. V tomto případě nový technik spustí skript v relaci na vzdáleném počítači a narazí na problém. Technik se odpojí od relace, aby se zkušený manažer mohl připojit k relaci a vyřešit problém.
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
Technik začíná vytvořením relací na několika vzdálených počítačích a spuštěním skriptu v každé relaci. První příkaz pomocí rutiny New-PSSession
vytvoří ITTask
relaci na třech vzdálených počítačích. Příkaz uloží relace do $s
proměnné. Druhý příkaz používá parametr Invoke-Command
FilePath rutiny ke spuštění skriptu v relacích v $s
proměnné.
Skript spuštěný na počítači Srv1 generuje neočekávané chyby. Technik kontaktuje svého nadřízený a požádá o pomoc. Vedoucí nasměruje technika, aby se odpojil od relace, aby mohl prozkoumat. Druhý příkaz pomocí rutiny Get-PSSession
získá ITTask
relaci na počítači Srv1 a rutinu Disconnect-PSSession
k odpojení. Tento příkaz nemá vliv na ITTask
relace na ostatních počítačích.
Třetí příkaz používá rutinu Get-PSSession
ITTask
k získání relací. Výstup ukazuje, že ITTask
příkazem k odpojení nebyly ovlivněny relace na počítačích Srv2 a Srv30.
Vedoucí se přihlásí ke svému domovskému počítači, připojí se ke své podnikové síti, spustí PowerShell a použije rutinu Get-PSSession
ITTask
k získání relace na počítači Srv1. Pro přístup k relaci používá přihlašovací údaje technika.
Dále správce použije rutinu Connect-PSSession
pro připojení k ITTask
relaci na počítači Srv1. Příkaz uloží relaci do $s
proměnné.
Správce používá rutinu Invoke-Command
ke spuštění některých diagnostických příkazů v relaci v $s
proměnné. Rozpozná, že skript selhal, protože nenalezl požadovaný adresář.
Správce pomocí MkDir
funkce vytvoří adresář a pak skript restartuje Get-PatchStatus.ps1
a odpojí se od relace. Vedoucí hlásí své zjištění technikovi, navrhuje, aby se znovu připojil k relaci, aby dokončil úkoly, a požádá ho, aby do skriptu přidal příkaz Get-PatchStatus.ps1
, který vytvoří požadovaný adresář, pokud neexistuje.
Příklad 4 – Změna hodnoty časového limitu pro psSession
Tento příklad ukazuje, jak opravit hodnotu IdleTimeout vlastnost relace, aby bylo možné ji odpojit.
Vlastnost časového limitu nečinnosti relace je důležitá pro odpojené relace, protože určuje, jak dlouho se odpojená relace udržuje před odstraněním relace. Možnost časového limitu nečinnosti můžete nastavit při vytváření relace a při odpojení. Výchozí hodnoty pro časový limit nečinnosti relace jsou nastaveny v $PSSessionOption
proměnné předvoleb v místním počítači a v konfiguraci relace na vzdáleném počítači. Hodnoty nastavené pro relaci mají přednost před hodnotami nastavenými v konfiguraci relace, ale hodnoty relace nesmí překročit kvóty nastavené v konfiguraci relace, například hodnota 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
První příkaz pomocí rutiny New-PSSessionOption
vytvoří objekt možnosti relace. Používá parametr IdleTimeout k nastavení časového limitu nečinnosti 48 hodin (172800000
milisekund). Příkaz uloží objekt možnosti relace do $Timeout
proměnné.
Druhý příkaz pomocí rutiny New-PSSession
vytvoří ITTask
relaci na počítači Serveru01. Příkaz uloží relaci do $s
proměnné. Hodnota parametru SessionOption je 48hodinový časový limit nečinnosti v $Timeout
proměnné.
Třetí příkaz odpojí ITTask
relaci v $s
proměnné. Příkaz selže, protože hodnota časového limitu nečinnosti relace překračuje kvótu MaxIdleTimeoutMs v konfiguraci relace. Vzhledem k tomu, že časový limit nečinnosti se nepoužívá, dokud se relace neodpojí, může dojít k nedetekci tohoto porušení, když je relace používána.
Čtvrtý příkaz používá rutinu Invoke-Command
Get-PSSessionConfiguration
ke spuštění příkazu pro Microsoft.PowerShell
konfiguraci relace na počítači Server01. Příkaz používá rutinu Format-List
k zobrazení všech vlastností konfigurace relace v seznamu. Výstup ukazuje, že vlastnost MaxIdleTimeoutMS , která určuje maximální povolenou hodnotu IdleTimeout pro relace, které používají konfiguraci relace, je 43200000
milisekundy (12 hodin).
Pátý příkaz získá hodnoty možností relace relace v $s
proměnné. Hodnoty mnoha možností relace jsou vlastnosti ConnectionInfo vlastnosti Runspace relace. Výstup ukazuje, že hodnota vlastnosti IdleTimeout relace je 172800000
milisekund (48 hodin), která porušuje kvótu MaxIdleTimeoutMs 12 hodin v konfiguraci relace. Pokud chcete tento konflikt vyřešit, můžete pomocí parametru ConfigurationName vybrat jinou konfiguraci relace nebo pomocí parametru IdleTimeout snížit časový limit nečinnosti relace.
Šestý příkaz relaci odpojí. Používá parametr IdleTimeoutSec k nastavení časového limitu nečinnosti na 12hodinový maximum.
Sedmý příkaz získá hodnotu IdleTimeout vlastnost odpojené relace, která se měří v milisekundách. Výstup potvrdí, že příkaz byl úspěšný.
Parametry
-Confirm
Před spuštěním rutiny zobrazí výzvu k potvrzení.
Typ: | SwitchParameter |
Aliasy: | cf |
Position: | Named |
Default value: | False |
Vyžadováno: | False |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | False |
-Id
Odpojí se od relací pomocí zadaného ID relace. Zadejte jedno nebo více ID (oddělené čárkami) nebo pomocí operátoru rozsahu (..
) zadejte rozsah ID.
K získání ID relace použijte rutinu Get-PSSession
. ID instance je uloženo ve vlastnosti ID relace.
Typ: | Int32[] |
Position: | 1 |
Default value: | None |
Vyžadováno: | True |
Přijmout vstup kanálu: | True |
Přijmout zástupné znaky: | False |
-IdleTimeoutSec
Změní hodnotu časového limitu nečinnosti odpojené psSession. Zadejte hodnotu v sekundách. Minimální hodnota je 60
(1 minuta).
Časový limit nečinnosti určuje, jak dlouho se odpojená relace PSSession udržuje ve vzdáleném počítači. Po vypršení časového limitu se příkaz PSSession odstraní.
Odpojené relace PSSession se považují za nečinné od okamžiku, kdy jsou odpojené, i když jsou příkazy spuštěné v odpojené relaci.
Výchozí hodnota časového limitu nečinnosti relace je nastavena hodnotou IdleTimeoutMs vlastnosti konfigurace relace. Výchozí hodnota je 7200000
milisekundy (2 hodiny).
Hodnota tohoto parametru má přednost před hodnotou vlastnosti $PSSessionOption
IdleTimeout proměnné předvolby a výchozí hodnotou časového limitu nečinnosti v konfiguraci relace. Tato hodnota však nemůže překročit hodnotu vlastnosti MaxIdleTimeoutMs konfigurace relace. Výchozí hodnota MaxIdleTimeoutMs je 12 hodin (43200000
milisekund).
Typ: | Int32 |
Position: | Named |
Default value: | 60 |
Vyžadováno: | False |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | False |
-InstanceId
Odpojí se od relací se zadanými ID instancí.
ID instance je identifikátor GUID, který jednoznačně identifikuje relaci na místním nebo vzdáleném počítači. ID instance je jedinečné, a to i napříč několika relacemi na více počítačích.
K získání ID instance relace použijte rutinu Get-PSSession
. ID instance je uloženo ve vlastnosti InstanceID relace.
Typ: | Guid[] |
Position: | Named |
Default value: | None |
Vyžadováno: | True |
Přijmout vstup kanálu: | True |
Přijmout zástupné znaky: | False |
-Name
Odpojí se od relací pomocí zadaných popisných názvů. Jsou povoleny zástupné cardy.
Pokud chcete získat popisný název relace, použijte tuto rutinu Get-PSSession
. Popisný název je uložen ve vlastnosti Název relace.
Typ: | String[] |
Position: | Named |
Default value: | None |
Vyžadováno: | True |
Přijmout vstup kanálu: | True |
Přijmout zástupné znaky: | True |
-OutputBufferingMode
Určuje, jak se výstup příkazu spravuje v odpojené relaci, když je výstupní vyrovnávací paměť plná. Výchozí hodnota je Block
.
Pokud příkaz v odpojené relaci vrací výstup a výstupní vyrovnávací paměť vyplní, hodnota tohoto parametru efektivně určuje, jestli se příkaz bude dál spouštět během odpojení relace. Hodnota Block
pozastaví příkaz, dokud se relace znovu nepřipojí. Hodnota Drop
umožňuje dokončení příkazu, i když můžou být ztracena data. Při použití Drop
hodnoty přesměrujte výstup příkazu na soubor na disku.
Platné hodnoty jsou:
Block
: Pokud je výstupní vyrovnávací paměť plná, spuštění se pozastaví, dokud se vyrovnávací paměť nevymaže.Drop
: Pokud je výstupní vyrovnávací paměť úplná, provádění pokračuje. Při ukládání nového výstupu se nejstarší výstup zahodí.None
: Není zadán žádný režim ukládání do vyrovnávací paměti. Hodnota OutputBufferingMode vlastnosti konfigurace relace se používá pro odpojenou relaci.
Typ: | OutputBufferingMode |
Position: | Named |
Default value: | Block |
Vyžadováno: | False |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | False |
-Session
Odpojí se od zadaných instancí PSSession. Zadejte objekty PSSession , například objekty, které rutina New-PSSession
vrátí. Objekt PSSession můžete také převést na Disconnect-PSSession
.
Rutina Get-PSSession
může získat všechny psSession, které se ukončí na vzdáleném počítači, včetně instancí PSSession , které jsou odpojené a psSessions , které jsou připojené k jiným relacím na jiných počítačích. Disconnect-PSSession
odpojí pouze psSession , které jsou připojeny k aktuální relaci. Pokud předáte další psSessions do Disconnect-PSSession
, Disconnect-PSSession
příkaz selže.
Typ: | PSSession[] |
Position: | 1 |
Default value: | None |
Vyžadováno: | True |
Přijmout vstup kanálu: | True |
Přijmout zástupné znaky: | False |
-ThrottleLimit
Nastaví limit omezení pro Disconnect-PSSession
příkaz.
Limit omezení je maximální počet souběžných připojení, která lze navázat pro spuštění tohoto příkazu. Pokud tento parametr vynecháte nebo zadáte hodnotu 0
, použije se výchozí hodnota 32
.
Omezení se vztahuje pouze na aktuální příkaz, ne na relaci nebo na počítač.
Typ: | Int32 |
Position: | Named |
Default value: | 32 |
Vyžadováno: | False |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | False |
-WhatIf
Zobrazuje, co by se stalo při spuštění rutiny. Rutina není spuštěna.
Typ: | SwitchParameter |
Aliasy: | wi |
Position: | Named |
Default value: | False |
Vyžadováno: | False |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | False |
Vstupy
Relaci můžete připojit k této rutině.
Výstupy
Tato rutina vrátí objekt představující relaci, kterou odpojil.
Poznámky
PowerShell obsahuje následující aliasy pro Disconnect-PSSession
:
- Windows:
dnsn
Tato rutina je dostupná jenom na platformách Windows.
Rutina
Disconnect-PSSession
funguje jenom v případech, kdy místní a vzdálené počítače používají PowerShell 3.0 nebo novější.Pokud použijete rutinu
Disconnect-PSSession
v odpojené relaci, příkaz nemá na relaci žádný vliv a negeneruje chyby.Odpojené relace zpětné smyčky s interaktivními tokeny zabezpečení (vytvořené s parametrem EnableNetworkAccess ) je možné znovu připojit pouze z počítače, na kterém byla relace vytvořena. Toto omezení chrání počítač před škodlivým přístupem.
Když odpojíte relaci PSSession, stav relace je
Disconnected
a jeho dostupnost je Žádná.Hodnota vlastnosti State je relativní vzhledem k aktuální relaci. Hodnota znamená,
Disconnected
že psSession není připojen k aktuální relaci. Neznamená ale, že psSession je odpojen od všech relací. Může se připojit k jiné relaci. Chcete-li zjistit, zda se můžete připojit nebo znovu připojit k relaci, použijte vlastnost Dostupnost .Hodnota
None
dostupnosti označuje, že se můžete připojit k relaci. HodnotaBusy
značí, že se nemůžete připojit k psSession , protože je připojena k jiné relaci.Další informace o hodnotách State vlastnost relací naleznete v tématu RunspaceState Výčtu.
Další informace o hodnotách vlastnosti Availability relací naleznete v tématu RunspaceAvailability Výčet.