about_PSSession_Details

Krátký popis

Poskytuje podrobné informace o relacích PowerShellu a o roli, kterou hrají ve vzdálených příkazech.

Dlouhý popis

Session je prostředí, ve kterém běží PowerShell. Při každém spuštění PowerShellu se pro vás vytvoří relace. Na počítači nebo jiném počítači můžete vytvořit další relace, které se nazývají relace PowerShellu nebo PSSessions.

Na rozdíl od relací, které pro vás PowerShell vytvoří, řídíte a spravujete vytvořené relace PSSession.

PSSessions hrají důležitou roli ve vzdáleném výpočetním prostředí. Při vytváření relace PSSession, která je připojena ke vzdálenému počítači, vytváří PowerShell trvalé připojení ke vzdálenému počítači, aby tuto relaci podporoval. Pomocí příkazu PSSession můžete spustit řadu příkazů, funkcí a skriptů, které sdílejí data.

Toto téma obsahuje podrobné informace o relacích a konfiguracích PSSession v PowerShellu. Základní informace o úkolech, které můžete provádět s relacemi, naleznete v tématu about_PSSessions.

O relacích

Spouštěcí prostředí, ve kterém běží PowerShell, se technicky označuje jako relace. Každá relace zahrnuje instanci modulu System.Management.Automation a hostitelského programu, ve kterém běží PowerShell. Hostitelem může být známá konzola PowerShellu nebo jiný program, který spouští příkazy, například Cmd.exe, nebo program vytvořený pro hostování PowerShellu, jako je integrované skriptovací prostředí (ISE). Z pohledu systému Windows je relace procesem systému Windows na cílovém počítači.

Každá relace se konfiguruje nezávisle. Zahrnuje vlastní vlastnosti, vlastní zásady spouštění a vlastní profily. Prostředí, které existuje, když je relace vytvořena, přetrvává po celou dobu jejího trvání, i když změníte prostředí na počítači. Všechny relace se vytvářejí v globálním oboru, a to i v relacích, které vytvoříte ve skriptu.

V relaci můžete spustit pouze jeden příkaz (nebo kanál příkazu) najednou. Druhý příkaz běží synchronně (jeden po druhém) čeká až čtyři minuty, než se dokončí první příkaz. Druhý příkaz spuštěný asynchronně (souběžně) selže.

Informace o psSessions

Při každém spuštění PowerShellu se vytvoří nová instance. PowerShell vytvoří dočasné relace pro spouštění jednotlivých příkazů. Můžete ale také vytvářet relace (označované jako relace PowerShellu nebo PSSessions), které řídíte a spravujete.

PsSessions jsou důležité pro vzdálené příkazy. Pokud použijete parametr ComputerName rutin Invoke-Command nebo Enter-PSSession, PowerShell vytvoří dočasnou relaci pro spuštění příkazu a potom relaci zavře hned po dokončení příkazu nebo interaktivní relace.

Pokud ale použijete rutinu New-PSSession k vytvoření relace PSSession, PowerShell vytvoří trvalou relaci na vzdáleném počítači, ve kterém můžete spustit více příkazů nebo interaktivní relace. Vytvořené PSSessions zůstanou otevřené a dostupné k použití, dokud je neodstraníte nebo dokud nezavřete relaci, ve které byly vytvořeny.

Při vytváření psSession na vzdáleném počítači vytvoří systém na vzdáleném počítači proces PowerShellu a vytvoří připojení z místního počítače k procesu ve vzdáleném počítači. Při vytváření psSession na místním počítači se vytvoří nový proces i připojení v místním počítači.

Kdy potřebuji psSession?

Rutiny Invoke-Command a Enter-PSSession mají parametry ComputerName a Session. Ke spuštění vzdáleného příkazu můžete použít některý z těchto příkazů.

Pomocí parametru ComputerName spusťte jeden příkaz nebo řadu nesouvisejících příkazů na jednom nebo mnoha počítačích.

Ke spuštění příkazů, které sdílejí data, potřebujete trvalé připojení ke vzdálenému počítači. V takovém případě vytvořte příkaz PSSession a pak pomocí parametru Session spusťte příkazy v psSession.

Mnoho dalších rutin, které získávají data ze vzdálených počítačů, například Get-Process, Get-Service, Get-EventLoga Get-WmiObject mají pouze parametr ComputerName. Ke vzdálenému shromažďování dat používají jiné technologie než vzdálenou komunikaci PowerShellu. Tyto rutiny nemají parametr Session, ale tyto příkazy můžete spustit pomocí rutiny Invoke-Command v příkazu PSSession.

Jak vytvořím psSession?

K vytvoření PSSession použijte cmdlet New-PSSession. Pomocí New-PSSession můžete vytvořit psSession na místním nebo vzdáleném počítači.

Můžu vytvořit psSession na jakémkoli počítači?

Pokud chcete vytvořit PSSession, která je připojená ke vzdálenému počítači, musí být počítač nakonfigurovaný pro vzdálenou správu v PowerShellu. Aktuální uživatel musí být členem skupiny Administrators na vzdáleném počítači nebo musí být aktuální uživatel schopen zadat přihlašovací údaje člena skupiny Administrators. Další informace naleznete v tématu about_Remote_Requirements.

Můžu svoje psSessions zobrazit v jiných relacích?

Počínaje Windows PowerShellem 3.0 získává parametr ComputerName rutiny Get-PSSession PSSessions, které jste vytvořili na zadaných vzdálených počítačích.

Aktivní relace PSSession jsou udržovány na vzdáleném počítači (na straně serveru připojení) a můžete je získat z libovolné relace na libovolném počítači.

Pokud například vytvoříte psSession z počítače Server01 na počítač Server02 a pak přepnete na počítač Server03, můžete k získání relace použít příkaz podobný následujícímu.

Get-PSSession -ComputerName Server02

I když se od relace odpojíte, bude relace udržována ve vzdáleném počítači, dokud ji neodstraníte nebo nevysadí časový limit.

Ve Windows PowerShell 2.0 můžete získat pouze ty PSSessions, které jste vytvořili v aktuální relaci. Nemůžete získat PSSessions, které jste vytvořili v jiných relacích. Další informace naleznete v části Get-PSSession.

Můžu vidět psSessions, které ostatní vytvořili na mém počítači?

Můžete získat a spravovat pouze PSSessions, které vytvořili jiní, jen pokud můžete poskytnout přihlašovací údaje uživatele, který PSSession vytvořil, nebo pokud konfigurace relace, kterou PSSession používá, zahrnuje přihlašovací údaje pro Spustit jako. V opačném případě můžete získat, připojit se, používat a spravovat pouze ty PSSessions, které jste vytvořili.

Můžu se připojit k psSession z jiného počítače?

Počínaje systémem Windows PowerShell 3.0 jsou PSSessions na počítačích s Windows nezávislé na relacích, ve kterých byly iniciovány. Aktivní PSSessions jsou udržovány v počítači na vzdálené nebo na tzv. "serverové straně" připojení.

Na počítači s Windows můžete k odpojení od psSession použít rutinu Disconnect-PSSession. PsSession je odpojena od místní relace, ale je udržována ve vzdáleném počítači. Příkazy se budou dál spouštět v odpojené psSession. Můžete zavřít PowerShell a vypnout původní počítač bez přerušení psSession.

Pak, dokonce i o několik hodin později, můžete pomocí rutiny Get-PSSession získat PSSession a pomocí rutiny Connect-PSSession se připojit k PSSession z nové relace na jiném počítači s Windows. Další informace najdete v tématu about_Remote_Disconnected_Sessions.

Co se stane s chybou PSSession, když se můj počítač zastaví?

Relace PSSession, které jsou odpojené, jsou nezávislé na relacích, ve kterých byly vytvořeny. Pokud odpojíte psSession a potom zavřete původní počítač, psSession se udržuje na vzdáleném počítači.

Kromě toho se PowerShell pokusí obnovit aktivní psSessions, které jsou neúmyslně odpojeny, například restartováním počítače, dočasným výpadkem napájení nebo přerušením sítě. PowerShell se pokusí udržet nebo obnovit PSSession do otevřeného stavu, pokud je původní relace stále dostupná, nebo do odpojeného stavu, pokud dostupná není.

"Aktivní" PSSession je ta, která spouští příkazy. Pokud je relace PSSession připojena (není odpojena) a příkazy jsou spuštěny v psSession při zavření připojené relace, PowerShell se pokusí udržovat psSession na vzdáleném počítači. Pokud však nejsou spuštěny žádné příkazy v psSession, PowerShell zavře psSession při zavření připojené relace. Další informace najdete v tématu about_Remote_Disconnected_Sessions.

Můžu spustit úlohu na pozadí v psSession?

Ano. Úloha na pozadí je příkaz, který běží asynchronně bez interakce s aktuální relací. Když odešlete příkaz pro spuštění úlohy, příkaz vrátí objekt úlohy, ale úloha se bude dál spouštět na pozadí, dokud nebude dokončena.

Pokud chcete spustit úlohu na pozadí na místním počítači, použijte příkaz Start-Job. Úlohu na pozadí můžete spustit v dočasném připojení (pomocí parametru ComputerName) nebo v psSession (pomocí parametru Session).

Pokud chcete spustit úlohu na pozadí na vzdáleném počítači, použijte rutinu Invoke-Command s parametrem AsJob nebo pomocí rutiny Invoke-Command spusťte na vzdáleném počítači příkaz Start-Job. Při použití parametru AsJob můžete použít parametry ComputerName nebo Session.

Při použití Invoke-Command ke spuštění příkazu Start-Job je nutné příkaz spustit v příkazu PSSession. Pokud použijete parametr ComputerName, PowerShell ukončí připojení při vrácení objektu úlohy a úloha se přeruší.

Pro více informací, viz část o úlohách.

Můžu spustit interaktivní relaci?

Ano. Pokud chcete spustit interaktivní relaci se vzdáleným počítačem, použijte rutinu Enter-PSSession. V interaktivní relaci se příkazy, které zadáte na vzdáleném počítači, spouští stejně, jako kdybyste je zadali přímo na vzdáleném počítači.

Interaktivní relaci můžete spustit v dočasné relaci (pomocí parametru ComputerName) nebo v relaci PSSession (pomocí parametru relace). Pokud používáte psSession, PSSession uchovává data z předchozích příkazů a PSSession uchovává všechna data vygenerovaná během interaktivní relace pro použití v pozdějších příkazech.

Po ukončení interaktivní relace zůstane relace PSSession otevřená a dostupná pro použití.

Další informace naleznete v tématu Enter-PSSession a Exit-PSSession.

Musím odstranit psSessions?

Ano. PsSession je proces, což je samostatné prostředí, které používá paměť a další prostředky, i když ho nepoužíváte. Až budete hotovi s psSession, odstraňte ho. Pokud vytvoříte více instancí PSSession, zavřete ty, které nepoužíváte, a udržujte pouze ty, které se aktuálně používají.

Pokud chcete odstranit psSessions, použijte rutinu Remove-PSSession. Odstraní PSSessions a uvolní všechny prostředky, které používaly.

Můžete také použít parametr IdleTimeOutNew-PSSessionOption k zavření nečinné PSSession po zadaném intervalu. Další informace naleznete v tématu New-PSSessionOption.

Pokud uložíte objekt PSSession do proměnné a pak odstraníte psSession nebo necháte časový limit, proměnná stále obsahuje objekt PSSession, ale PSSession není aktivní a nelze jej použít ani opravit.

Jsou všechny relace a psSessions podobné?

Ne. Vývojáři můžou vytvářet vlastní relace, které zahrnují jenom vybrané poskytovatele a rutiny. Pokud příkaz funguje v jedné relaci, ale ne v jiné, může to být proto, že je relace omezená.

Viz také