Disconnect-PSSession
Odpojí se od relace.
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
Rutina Disconnect-PSSession
odpojí relaci PowerShellu (PSSession), například relaci spuštěnou pomocí New-PSSession
rutiny, od aktuální relace. V důsledku toho je relace PSSession v odpojeném stavu. K odpojené relaci PSSession se můžete připojit 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í jenom otevřené relace PSSession, které jsou připojené k aktuální relaci. Disconnect-PSSession
Aplikace nemůže odpojit přerušené nebo uzavřené relace PSSession nebo interaktivní instance PSSession spuštěné pomocí Enter-PSSession
rutiny a nemůže odpojit relace PSSes, které jsou připojeny k jiným relacím.
Pokud se chcete znovu připojit k odpojené lekci PSSession, použijte Connect-PSSession
rutiny nebo Receive-PSSession
.
Při odpojení psSession příkazy v PSSession budou spuštěny až do jejich dokončení, pokud nedojde k vypršení časového limitu PSSession nebo pokud nejsou příkazy v PSSession 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. Ke 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 zavedená v Windows PowerShell 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 používá parametr Name k identifikaci PSSession.
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 Odpojeno a dostupnost je Žádná, což znamená, že relace není zaneprázdněná a je možné 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 Server12 od aktuální relace.
Relace ITTask byla vytvořena v aktuální relaci a připojuje se k počítači Server12. Příkaz použije rutinu Get-PSSession
k získání relace a rutinu Disconnect-PSSession
k jejímu 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á parametr OutputBufferingMode k nastavení výstupního režimu na Drop. Toto nastavení zajišťuje, že skript spuštěný v relaci může běžet i v případě, že je zaplněná výstupní vyrovnávací paměť relace. Vzhledem k tomu, že skript zapisuje svůj výstup do sestavy ve sdílené složce, může dojít ke ztrátě jiného výstupu bez následků.
Příkaz také používá parametr IdleTimeoutSec k prodloužení časového limitu nečinnosti relace na 24 hodin. Toto nastavení poskytuje správci nebo jiným správcům čas, aby se znovu připojili k relaci, aby ověřili, že se skript spustil, a v případě potřeby řešení potíží.
Příklad 3 – Použití více instancí PSSession na více počítačích
Tato řada příkazů ukazuje, jak se rutina Disconnect-PSSession
může použít v podnikovém scénáři. V takovém případě nový technik spustí skript v relaci na vzdáleném počítači a dojde k problému. Technik se odpojí od relace, aby se k relaci mohl připojit zkušenější manažer a problém vyřešit.
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čne 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ří relaci ITTask na třech vzdálených počítačích. Příkaz uloží relace do proměnné $s. Druhý příkaz používá parametr FilePath rutiny Invoke-Command
ke spuštění skriptu v relacích v proměnné $s.
Skript spuštěný na počítači Srv1 generuje neočekávané chyby. Technik kontaktuje svého nadřízenýho a požádá ho o pomoc. Vedoucí nasměruje technika, aby se odpojil od relace, aby mohl provést šetření. Druhý příkaz používá rutinu Get-PSSession
k získání relace ITTask na počítači Srv1 a rutiny Disconnect-PSSession
k jejímu odpojení. Tento příkaz nemá vliv na relace ITTask na ostatních počítačích.
Třetí příkaz používá rutinu Get-PSSession
k získání relací ITTask. Výstup ukazuje, že příkaz k odpojení neovlivnil relace ITTask na počítačích se systémy Srv2 a Srv30.
Vedoucí se přihlásí ke svému domácímu počítači, připojí se ke své podnikové síti, spustí Windows PowerShell a pomocí Get-PSSession
rutiny získá relaci ITTask na počítači Srv1. Pro přístup k relaci použije přihlašovací údaje technika.
Dále se správce pomocí rutiny Connect-PSSession
připojí k relaci ITTask na počítači Srv1. Příkaz uloží relaci do proměnné $s.
Správce použije rutinu Invoke-Command
ke spuštění některých diagnostických příkazů v relaci v $s
proměnné . Rozpoznává, že skript selhal, protože nenašel požadovaný adresář.
Správce pomocí MkDir
funkce vytvoří adresář a pak restartuje Get-PatchStatus.ps1
skript a odpojí se od relace. Vedoucí nahlásí své poznatky technikovi, navrhne mu, aby se znovu připojil k relaci a dokončil úkoly, a požádá ho o přidání příkazu do Get-PatchStatus.ps1
skriptu, 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 ji bylo možné 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, než se odstraní. Možnost časového limitu nečinnosti můžete nastavit při vytváření relace a při jejím odpojení. Výchozí hodnoty časového limitu 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 relací nemohou překročit kvóty nastavené v konfiguraci relace, například hodnotu 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 : https://schemas.microsoft.com/powershell/microsoft.powershell
MaxConcurrentCommandsPerShell : 1000
UseSharedProcess : false
ProcessIdleTimeoutSec : 0
xmlns : https://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 : https://schemas.microsoft.com/powershell/microsoft.powershell
SDKVersion : 2
Name : microsoft.powershell
XmlRenderingType : text
Capability : {Shell}
RunAsPassword :
MaxProcessesPerShell : 15
ParentResourceUri : https://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 : https://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 použije rutinu New-PSSessionOption
k vytvoření objektu možnosti relace. Používá parametr IdleTimeout k nastavení časového limitu nečinnosti na 48 hodin (172800000 milisekund). Příkaz uloží objekt možnosti relace do proměnné $Timeout.
Druhý příkaz použije rutinu New-PSSession
k vytvoření relace ITTask na počítači Server01. Příkaz uloží relaci do proměnné $s. Hodnota parametru SessionOption je 48hodinový časový limit nečinnosti v proměnné $Timeout.
Třetí příkaz odpojí relaci ITTask v proměnné $s. 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í, toto porušení může zůstat nezjištěné, když se relace používá.
Čtvrtý příkaz používá rutinu Invoke-Command
ke spuštění Get-PSSessionConfiguration
příkazu pro konfiguraci relace Microsoft.PowerShellu 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 milisekund (12 hodin).
Pátý příkaz získá hodnoty možností relace relace v proměnné $s. Hodnoty mnoha možností relace jsou vlastnosti ConnectionInforunspace vlastnost relace. Výstup ukazuje, že hodnota vlastnosti IdleTimeout relace je 172800000 milisekund (48 hodin), což 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 zkrátit časový limit nečinnosti relace.
Šestý příkaz relaci odpojí. Používá parametr IdleTimeoutSec k nastavení časového limitu nečinnosti na maximálně 12 hodin.
Sedmý příkaz získá hodnotu vlastnosti IdleTimeout odpojené relace, která se měří v milisekundách. Výstup potvrzuje, že příkaz proběhl úspěšně.
Parametry
-Confirm
Před spuštěním rutiny zobrazí výzvu k potvrzení.
Type: | SwitchParameter |
Aliases: | cf |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Id
Odpojí se od relací se zadaným ID relace. Zadejte jedno nebo více ID (oddělená čárkami) nebo použijte operátor rozsahu (..) k určení rozsahu ID.
K získání ID relace použijte rutinu Get-PSSession
. ID instance je uloženo ve vlastnosti ID relace.
Type: | Int32[] |
Position: | 1 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-IdleTimeoutSec
Změní hodnotu časového limitu nečinnosti odpojené relace PSSession. Zadejte hodnotu v sekundách. Minimální hodnota je 60 (1 minuta).
Časový limit nečinnosti určuje, jak dlouho je odpojená relace PSSession udržována ve vzdáleném počítači. Po vypršení časového limitu se relace PSSession odstraní.
Odpojené relace PSSession se považují za nečinné od okamžiku, kdy jsou odpojeny, a to i v případě, že v odpojené relaci běží příkazy.
Výchozí hodnota časového limitu nečinnosti relace je nastavena hodnotou vlastnosti IdleTimeoutMs konfigurace relace. Výchozí hodnota je 7200000 milisekund (2 hodiny).
Hodnota tohoto parametru má přednost před hodnotou vlastnosti IdleTimeout proměnné předvolby $PSSessionOption a výchozí hodnotou časového limitu nečinnosti v konfiguraci relace. Tato hodnota však nesmí překročit hodnotu vlastnosti MaxIdleTimeoutMs konfigurace relace. Výchozí hodnota MaxIdleTimeoutMs je 12 hodin (43200000 milisekund).
Type: | Int32 |
Position: | Named |
Default value: | 60 |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | 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říč více 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.
Type: | Guid[] |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Name
Odpojí se od relací se zadanými popisnými názvy. Zástupné cardy jsou povolené.
Pokud chcete získat popisný název relace, použijte rutinu Get-PSSession
. Popisný název je uložený ve vlastnosti Name relace.
Type: | String[] |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | True |
-OutputBufferingMode
Určuje, jak se spravuje výstup příkazu v odpojené relaci, když je výstupní vyrovnávací paměť plná. Výchozí hodnota je Blok.
Pokud příkaz v odpojené relaci vrací výstup a výstupní vyrovnávací paměť se vyplní, hodnota tohoto parametru ve skutečnosti určuje, zda příkaz poběží i v době, kdy je relace odpojena. Hodnota Blokovat pozastaví příkaz, dokud se relace znovu nepřipojí. Hodnota Drop umožňuje příkaz dokončit, i když může dojít ke ztrátě dat. Při použití hodnoty Drop přesměrujte výstup příkazu do souboru na disku.
Platné hodnoty jsou:
- Blok: Když se výstupní vyrovnávací paměť zaplní, provádění se pozastaví, dokud se vyrovnávací paměť nesmaže.
- Vyřazení: Když je výstupní vyrovnávací paměť plná, provádění pokračuje. Při uložení nového výstupu se nejstarší výstup zahodí.
- Žádný: Není zadán žádný režim ukládání výstupu do vyrovnávací paměti. Hodnota Vlastnosti OutputBufferingMode konfigurace relace se používá pro odpojenou relaci.
Type: | OutputBufferingMode |
Position: | Named |
Default value: | Block |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Session
Odpojí se od zadaných instancí PSSessions. Zadejte objekty PSSession, například ty, které rutina New-PSSession
vrací. Objekt PSSession můžete také předvést do Disconnect-PSSession
.
Rutina Get-PSSession
může získat všechny relace PSSession, které končí ve vzdáleném počítači, včetně odpojených instancí PSSession a PSSession připojených k jiným relacím na jiných počítačích. Disconnect-PSSession
odpojí pouze relaci PSSession, která jsou připojená k aktuální relaci. Pokud předáte jiné relace PSSession do Disconnect-PSSession
, Disconnect-PSSession
příkaz se nezdaří.
Type: | PSSession[] |
Position: | 1 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-ThrottleLimit
Nastaví limit omezení pro Disconnect-PSSession
příkaz .
Limit omezení je maximální počet souběžných připojení, která je možné vytvořit 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, nikoli na relaci nebo na počítač.
Type: | Int32 |
Position: | Named |
Default value: | 32 |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-WhatIf
Zobrazuje, co by se stalo při spuštění rutiny. Rutina není spuštěna.
Type: | SwitchParameter |
Aliases: | wi |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Vstupy
Relaci můžete předvést do Disconnect-PSSession
.
Výstupy
Disconnect-PSSession
vrátí objekt, který představuje relaci, kterou odpojil.
Poznámky
Rutina
Disconnect-PSSession
funguje jenom v případě, že na místních a vzdálených počítačích běží PowerShell 3.0 nebo novější.Pokud použijete rutinu
Disconnect-PSSession
v odpojené relaci, nemá příkaz na relaci žádný vliv a negeneruje chyby.Odpojené relace zpětné smyčky s interaktivními tokeny zabezpečení (vytvořené pomocí parametru EnableNetworkAccess ) se dají znovu připojit jenom 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 Odpojeno a dostupnost je Žádná.
Hodnota vlastnosti State je relativní vzhledem k aktuální relaci. Hodnota Odpojeno proto znamená, že relace PSSession není připojená k aktuální relaci. Neznamená to ale, že je relace PSSession odpojená od všech relací. Může být připojená k jiné relaci. Pokud chcete zjistit, jestli se můžete připojit nebo znovu připojit k relaci, použijte vlastnost Availability (Dostupnost ).
Hodnota DostupnostNone označuje, že se můžete připojit k relaci. Hodnota Busy ( Zaneprázdněn) označuje, že se nemůžete připojit k relaci PSSession, protože je připojená k jiné relaci.
Další informace o hodnotách State vlastnost relací naleznete v tématu RunspaceState – výčet.
Další informace o hodnotách vlastnosti Availability relací naleznete v tématu RunspaceAvailability – výčet.