Sdílet prostřednictvím


about_PSSessions

Krátký popis

Popisuje relace PowerShellu (PSSession) a vysvětluje, jak vytvořit trvalé připojení ke vzdálenému počítači.

Dlouhý popis

Ke spuštění příkazů PowerShell na vzdáleném počítači můžete použít parametr ComputerName cmdletu, nebo můžete vytvořit relaci PowerShell (PSSession) a spustit příkazy v PSSession.

Při vytváření psSession vytvoří PowerShell trvalé připojení ke vzdálenému počítači. Pomocí psSession spusťte řadu souvisejících příkazů na vzdáleném počítači. Příkazy, které běží ve stejné psSession, můžou sdílet data, jako jsou hodnoty proměnných, aliasů a funkcí.

Můžete také vytvořit psSession v místním počítači a spouštět v něm příkazy. Místní PSSession používá infrastrukturu vzdálené správy PowerShellu k vytvoření a údržbě PSSession.

Počínaje Windows PowerShellem 3.0 jsou PSSessions v systému Windows nezávislé na relacích, ve kterých byly vytvořeny. Aktivní PSSessions jsou udržovány na vzdáleném počítači (nebo na počítači na vzdáleném konci připojení, tedy na straně serveru). V důsledku toho se ve Windows můžete odpojit od psSession na vzdáleném počítači s Windows a později se k němu znovu připojit ze stejného počítače nebo z jiného počítače s Windows.

Toto téma vysvětluje, jak vytvářet, používat, získávat a odstraňovat relace PSSession. Další informace naleznete v tématu about_PSSession_Details.

Poznámka: PsSessions používají infrastrukturu vzdálené komunikace PowerShellu. Pokud chcete používat PSSessions, musí být místní a vzdálené počítače nakonfigurované pro vzdálenou komunikaci. Další informace naleznete v tématu about_Remote_Requirements.

Pokud chcete v systému Windows Vista a novějších verzích systému Windows vytvořit na místním počítači psSession, musíte spustit PowerShell s možností Spustit jako správce.

Co je relace?

Session je prostředí, ve kterém běží PowerShell.

Pokaždé, když spustíte PowerShell, vytvoří se relace za vás a v relaci můžete spouštět příkazy. Do sezení můžete také přidávat položky, jako jsou moduly a snap-iny, a můžete vytvářet položky, jako jsou proměnné, funkce a aliasy. Tyto položky existují pouze v relaci a jsou odstraněny po skončení relace.

Můžete také vytvářet relace spravované uživatelem, označované jako relace PowerShellu nebo PSSessions, na místním počítači nebo na vzdáleném počítači. Stejně jako u výchozí relace můžete spouštět příkazy v psSession a přidávat a vytvářet položky. Na rozdíl od relace, která se spustí automaticky, však můžete řídit relace PSSession, které vytvoříte. Můžete je získat, vytvořit, nakonfigurovat a odebrat, odpojit je a znovu se k nim připojit a spustit více příkazů ve stejné psSession. PSSession zůstane k dispozici, dokud jej neodstraníte, nebo nevyprší časový limit.

Obvykle vytvoříte psSession pro spuštění řady souvisejících příkazů na vzdáleném počítači. Při vytváření psSession na vzdáleném počítači vytvoří PowerShell trvalé připojení ke vzdálenému počítači pro podporu relace.

Pokud ke spuštění vzdáleného příkazu nebo spuštění interaktivní relace použijete parametr ComputerName rutiny Invoke-Command nebo Enter-PSSession, PowerShell vytvoří na vzdáleném počítači dočasnou relaci a relaci zavře, jakmile se příkaz dokončí nebo jakmile interaktivní relace skončí. Tyto dočasné relace nelze řídit a nemůžete je použít pro více než jeden příkaz nebo jednu interaktivní relaci.

V PowerShellu je "aktuální relace" ta relace, ve které pracujete. Aktuální relace může odkazovat na libovolnou relaci, včetně dočasné relace nebo relace PSSession.

Proč používat psSession?

Pokud potřebujete trvalé připojení ke vzdálenému počítači, použijte příkaz PSSession. Pomocí psSession můžete spustit řadu příkazů, které sdílejí data, jako je hodnota proměnných, obsah funkce nebo definice aliasu.

Vzdálené příkazy můžete spouštět bez vytvoření psSession. Pomocí parametru ComputerName rutin s podporou vzdáleného přístupu spusťte jeden příkaz nebo řadu nesouvisejících příkazů na jednom nebo mnoha počítačích.

Pokud použijete parametr ComputerNameInvoke-Command nebo Enter-PSSession, PowerShell vytvoří dočasné připojení ke vzdálenému počítači a po dokončení příkazu připojení zavře. Při zavření připojení dojde ke ztrátě datových prvků, které vytvoříte.

Jiné cmdlety, které mají parametr ComputerName, například Get-Eventlog a Get-WmiObject, používají ke shromažďování dat různé technologie vzdálené komunikace. Žádné nevytvoří trvalé připojení, jako je PSSession.

Vytvoření psSession

K vytvoření PSSession použijte cmdlet New-PSSession. K vytvoření PSSession na vzdáleném počítači použijte parametr ComputerName příkazu New-PSSession.

Například následující příkaz vytvoří novou psSession na počítači Server01.

New-PSSession -ComputerName Server01

Když příkaz odešlete, New-PSSession vytvoří PSSession a vrátí objekt, který představuje PSSession. Objekt můžete uložit v proměnné při vytváření psSession, nebo můžete použít příkaz Get-PSSession k získání psSession později.

Například následující příkaz vytvoří novou psSession na počítači Server01 a uloží výsledný objekt do proměnné $ps.

$ps = New-PSSession -ComputerName Server01

Jak vytvořit psSessions na více počítačích

Pokud chcete vytvořit psSessions na více počítačích, použijte parametr ComputerName rutiny New-PSSession. Do seznamu odděleného čárkami zadejte názvy vzdálených počítačů.

Pokud například chcete vytvořit PSSessions na počítačích Server01, Server02 a Server03, zadejte:

New-PSSession -ComputerName Server01, Server02, Server03

New-PSSession vytvoří jednu psSession na každém ze vzdálených počítačů.

Jak získat psSessions

Pokud chcete získat PSSessions vytvořené v aktuální relaci, použijte rutinu Get-PSSession bez parametru ComputerName. Get-PSSession vrátí stejný typ objektu, který New-PSSession vrátí.

Následující příkaz zobrazí všechny PSSessions, které byly vytvořeny v aktuální relaci.

Get-PSSession

Výchozí zobrazení PSSessions zobrazuje jejich ID a výchozí zobrazovaný název. Při vytváření relace můžete přiřadit alternativní název pro zobrazení.

Id   Name       ComputerName    State    ConfigurationName
---  ----       ------------    -----    ---------------------
1    Session1   Server01        Opened   Microsoft.PowerShell
2    Session2   Server02        Opened   Microsoft.PowerShell
3    Session3   Server03        Opened   Microsoft.PowerShell

Můžete také uložit PSSessions v proměnné. Následující příkaz získá psSessions a uloží je do proměnné $ps 123.

$ps123 = Get-PSSession

Při použití rutin PSSession můžete odkazovat na PSSession podle ID, jeho názvu nebo ID instance (GUID). Následující příkaz získá PSSession podle ID a uloží ho do proměnné $ps01.

$ps01 = Get-PSSession -Id 1

Počínaje windows PowerShellem 3.0 jsou psSessions udržovány ve vzdáleném počítači. Pokud chcete získat PSSessions, které jste vytvořili na specifických vzdálených počítačích, použijte parametr ComputerName rutiny Get-PSSession. Následující příkaz získá seznam PSSessions, které jste dříve vytvořili na vzdáleném počítači Server01. To zahrnuje relace PSSession vytvořené v aktuální relaci a v jiných relacích na místním počítači nebo jiných počítačích.

Get-PSSession -ComputerName Server01

Ve Windows PowerShellu 2.0 Get-PSSession získá pouze psSessions, které byly vytvořeny v aktuální relaci. Nezískává PSSessions, které byly vytvořeny v jiných relacích nebo na jiných počítačích, i když jsou relace připojeny a spouští příkazy na místním počítači.

Spouštění příkazů v psSession

Pokud chcete spustit příkaz v jednom nebo několika PSSessions, použijte rutinu Invoke-Command. Pomocí parametru Session určete PSSessions a pomocí parametru ScriptBlock určete příkaz.

Pokud chcete například spustit příkaz Get-ChildItem ("dir") v každé ze tří instancí PSSession uložených v proměnné $ps 123, zadejte:

Invoke-Command -Session $ps123 -ScriptBlock { Get-ChildItem }

Odstranění instancí psSession

Až budete hotovi s psSession, pomocí rutiny Remove-PSSession odstraňte psSession a uvolněte prostředky, které používal.

Remove-PSSession -Session $ps

nebo

Remove-PSSession -Id 1

K odebrání psSession ze vzdáleného počítače použijte parametr ComputerName rutiny Remove-PSSession.

Remove-PSSession -ComputerName Server01 -Id 1

Pokud neodstraníte PSSession, PSSession zůstane k dispozici pro použití, dokud nevyprší časový limit.

Můžete také použít parametr IdleTimeout rutiny New-PSSessionOption k nastavení doby vypršení platnosti pro nečinnou relaci PSSession. Další informace naleznete v tématu New-PSSessionOption.

Rutiny PSSession

Pro seznam rutin PSSession zadejte:

Get-Help *-PSSession
  • Connect-PSSession: Připojí relaci PSSession k aktuální relaci.
  • Disconnect-PSSession: Odpojí psSession od aktuální relace.
  • Enter-PSSession: Spustí interaktivní relaci.
  • Exit-PSSession: Ukončí interaktivní relaci.
  • Get-PSSession: Získává PSSessions v aktuální relaci
  • New-PSSession: Vytvoří novou PSSession na místním nebo vzdáleném počítači.
  • Receive-PSSession: Získá výsledky příkazů spuštěných v odpojené relaci
  • Remove-PSSession: Odstraní PSSessions v aktuální relaci.

Poznámka

Odpojené relace jsou podporovány pouze ve Windows. Příkazové rutiny Connect-PSSession, Disconnect-PSSessiona Receive-PSSession jsou k dispozici pouze na Windows. Další informace o odpojených relacích najdete v tématu about_Remote_Disconnected_Session.

Další informace

Další informace o PSSessions naleznete v tématu about_PSSession_Details.

Viz také