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

Relace je prostředí, ve kterém běží PowerShell. Relace se pro vás vytvoří při každém spuštění PowerShellu. 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.

Úlohy PSSession hrají důležitou roli ve vzdáleném computingu. Při vytváření psSession, který je připojen ke vzdálenému počítači, Vytvoří PowerShell trvalé připojení ke vzdálenému počítači, aby podporoval psSession. 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, najdete v tématu about_PSSessions.

O relacích

Technicky vzato je relace spouštěcím prostředím, ve kterém běží PowerShell. 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 při vytvoření relace, trvá po celou dobu jeho života, i když změníte prostředí v 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 se spustí asynchronně (souběžně).

Informace o psSessions

Relace se vytvoří při každém spuštění PowerShellu. 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 rutin, PowerShell vytvoří dočasnou relaci ke 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é verze PSSession zůstanou otevřené a dostupné pro použití, dokud je neodstraníte nebo dokud relaci, ve které byly vytvořeny, zavřete.

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?

Tyto Invoke-Command rutiny Enter-PSSession mají parametry ComputerName i 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 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-ServiceGet-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 pomocí této rutiny můžete Invoke-Command tyto příkazy spustit v příkazu PSSession.

Jak vytvořím psSession?

K vytvoření psSession použijte rutinu New-PSSession . Pomocí příkazu New-PSSession PSSession můžete vytvořit místní nebo vzdálený počítač.

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 komunikace v PowerShellu. Aktuální uživatel musí být členem skupiny Správa istrators ve vzdáleném počítači nebo musí být aktuální uživatel schopen zadat přihlašovací údaje člena skupiny Správa istrators. Další informace najdete v tématu about_Remote_Requirements.

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

Počínaje windows PowerShellem 3.0 získá parametr Get-PSSession ComputerName rutiny 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 PowerShellu 2.0 můžete získat pouze verze PSSession, 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 tématu Get-PSSession.

Můžu zobrazit psSessions, které jiní vytvořili v mém počítači?

Můžete získat a spravovat pouze psSessions, které ostatní vytvořili pouze v případě, že můžete zadat přihlašovací údaje uživatele, který vytvořil psSession nebo konfiguraci relace, kterou psSession používá, zahrnuje přihlašovací údaje Spustit jako. V opačném případě můžete získat, připojit se, používat a spravovat pouze vytvořené psSessions.

Můžu Připojení na psSession z jiného počítače?

Počínaje Windows PowerShellem 3.0 jsou relace vytvořené na počítačích s Windows nezávislé na relacích, ve kterých byly vytvořeny. Aktivní psSessions jsou udržovány v počítači na vzdálené nebo "straně serveru" připojení.

Na počítači s Windows můžete pomocí rutiny Disconnect-PSSession odpojit od 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 můžete Get-PSSession pomocí rutiny získat psSession a rutinu Connect-PSSession pro připojení 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í?

Odpojené relace PSSession 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í zachovat nebo obnovit stav PSSession do otevřeného stavu, pokud je původní relace stále dostupná nebo odpojený stav, pokud ne.

"Aktivní" psSession je ten, 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ě na pozadí 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 Start-Job příkaz. Úlohu na pozadí můžete spustit v dočasném připojení (pomocí parametru ComputerName ) nebo v psSession (pomocí parametru Relace ).

Pokud chcete spustit úlohu na pozadí na vzdáleném počítači, použijte rutinu Invoke-Command s jejím parametrem AsJob nebo použijte rutinu Invoke-CommandStart-Job ke spuštění příkazu na vzdáleném počítači. Při použití parametru AsJob můžete použít parametry ComputerName nebo Session .

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

Další informace najdete v tématu Informace 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 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 New-PSSessionOption IdleTimeOut ukončení nečinnosti 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é