PSSessionekről

Rövid leírás

Ismerteti a PowerShell-munkameneteket (PSSessions), és ismerteti, hogyan lehet állandó kapcsolatot létesíteni egy távoli számítógéppel.

Hosszú leírás

PowerShell-parancsok távoli számítógépen való futtatásához használhatja a parancsmag ComputerName paraméterét, vagy létrehozhat egy PowerShell-munkamenetet (PSSession), és futtathat parancsokat a PSSessionban.

PSSession létrehozásakor a PowerShell állandó kapcsolatot létesít a távoli számítógéppel. PsSession használatával futtathat egy távoli számítógépen kapcsolódó parancsokat. Az ugyanabban a PSSessionban futó parancsok megoszthatják az adatokat, például a változók, aliasok és függvények értékeit.

PsSessiont is létrehozhat a helyi számítógépen, és parancsokat futtathat benne. A helyi PSSession a PowerShell távelérés infrastruktúráját használja a PSSession létrehozásához és fenntartásához.

A Windows PowerShell 3.0-tól kezdve a Windows PSSessions független a létrehozásukhoz tartozó munkamenettől. Az aktív PSSessions a távoli számítógépen vannak fenntartva, vagy a kapcsolat távoli végén, azaz a "kiszolgálóoldalon." Ennek eredményeképpen Windows rendszeren leválaszthatja a PSSession-t egy távoli Windows-számítógépen, és később újracsatlakozhat ugyanabból a számítógépről vagy egy másik Windows-számítógépről.

Ez a témakör a PSSessions létrehozását, használatát, lekérését és törlését ismerteti. További fejlett információkért lásd: about_PSSession_Details.

Megjegyzés: A PSSession-ek a PowerShell-távvezérlés infrastruktúráját használják. A PSSessions használatához a helyi és a távoli számítógépeket be kell állítani a távoli kapcsolatokhoz. További információ: about_Remote_Requirements.

A Windows Vista és a Windows újabb verzióiban a PSSession helyi számítógépen való létrehozásához a PowerShellt a "Futtatás rendszergazdaként" beállítással kell elindítania.

Mi az a munkamenet?

A munkamenetek olyan környezetek, amelyekben a PowerShell fut.

A PowerShell minden indításakor létrejön egy munkamenet, és parancsokat futtathat a munkamenetben. Elemeket is hozzáadhat a munkamenethez, például modulokat és beépülő modulokat, és létrehozhat elemeket, például változókat, függvényeket és aliasokat. Ezek az elemek csak a munkamenetben léteznek, és a munkamenet végén törlődnek.

Létrehozhat felhasználó által felügyelt munkameneteket is, más néven "PowerShell-munkameneteket" vagy "PSSessions"-t a helyi számítógépen vagy egy távoli számítógépen. Az alapértelmezett munkamenethez hasonlóan parancsokat is futtathat a PSSessionban, és elemeket vehet fel és hozhat létre. Az automatikusan elinduló munkamenettől eltérően azonban szabályozhatja a létrehozott PSSessionst. Lekérheti, létrehozhatja, konfigurálhatja és eltávolíthatja őket, leválaszthatja és újracsatlakoztathatja őket, és több parancsot futtathat ugyanabban a PSSession-ben. A PSSession mindaddig elérhető marad, amíg el nem törli vagy le nem jár az ideje.

PSSession-t hoz létre, hogy egy sor kapcsolódó parancsot futtasson egy távoli számítógépen. Amikor PSSessiont hoz létre egy távoli számítógépen, a PowerShell állandó kapcsolatot létesít a távoli számítógéppel a munkamenet támogatásához.

Ha a vagy Invoke-Command parancsmag Enter-PSSession paraméterét használja távoli parancs futtatásához vagy interaktív munkamenet indításához, a PowerShell létrehoz egy ideiglenes munkamenetet a távoli számítógépen, és a parancs befejeződése után vagy az interaktív munkamenet befejeződése után bezárja a munkamenetet. Ezeket az ideiglenes munkameneteket nem szabályozhatja, és nem használhatja őket egyetlen parancsnál vagy egyetlen interaktív munkamenetnél.

A PowerShellben az "aktuális munkamenet" az a munkamenet, amelyben dolgozik. Az "aktuális munkamenet" bármely munkamenetre hivatkozhat, beleértve az ideiglenes munkamenetet vagy a PSSessiont is.

Miért érdemes PSSessiont használni?

PsSessiont akkor használjon, ha egy távoli számítógéphez állandó kapcsolatra van szüksége. PSSession esetén futtathat olyan parancsokat, amelyek adatokat osztanak meg, például a változók értékét, egy függvény tartalmát vagy egy alias definícióját.

PsSession létrehozása nélkül is futtathat távoli parancsokat. A távoli parancsmagok ComputerName paraméterével egyetlen parancsot vagy egy vagy több, egymástól független parancsot futtathat egy vagy több számítógépen.

Ha a ComputerName paramétert használja Invoke-Command vagy Enter-PSSession, a PowerShell ideiglenes kapcsolatot létesít a távoli számítógéppel, majd a parancs befejeződése után bezárja a kapcsolatot. A létrehozott adatelemek elvesznek a kapcsolat bezárásakor.

Más, ComputerName paraméterrel (például Get-Eventlog és Get-WmiObject) rendelkező parancsmagok különböző távoli kommunikációs technológiákat használnak az adatok gyűjtéséhez. Egyik sem hoz létre állandó kapcsolatot, például PSSessiont.

PSSession létrehozása

PSSession létrehozásához használja a New-PSSession parancsmagot. A PSSession távoli számítógépen való létrehozásához használja a parancsmag New-PSSession paraméterét.

A következő parancs például létrehoz egy új PSSession-t a Server01 számítógépen.

New-PSSession -ComputerName Server01

A parancs elküldésekor New-PSSession létrehozza a PSSessiont, és visszaad egy, a PSSession-t jelképező objektumot. A PSSession létrehozásakor mentheti az objektumot egy változóban, vagy egy Get-PSSession paranccsal később lekérheti a PSSessiont.

Az alábbi parancs például létrehoz egy új PSSession-t a Server01 számítógépen, és menti az eredményül kapott objektumot a $ps változóba.

$ps = New-PSSession -ComputerName Server01

PSSessions létrehozása több számítógépen

PsSessions több számítógépen való létrehozásához használja a parancsmag New-PSSession paraméterét. Írja be a távoli számítógépek nevét egy vesszővel tagolt listában.

Ha például PSSessionst szeretne létrehozni a Server01, Server02 és Server03 számítógépeken, írja be a következőt:

New-PSSession -ComputerName Server01, Server02, Server03

New-PSSession minden távoli számítógépen létrehoz egy PSSession-t.

PSSessions lekérése

Az aktuális munkamenetben létrehozott PSSessions lekéréséhez használja a Get-PSSession parancsmagot a ComputerName paraméter nélkül. Get-PSSession ugyanazt az objektumtípust adja vissza, amelyet New-PSSession ad vissza.

Az alábbi parancs lekéri az aktuális munkamenetben létrehozott összes PSSessiont.

Get-PSSession

A PSSessions alapértelmezett megjelenítése az azonosítójukat és az alapértelmezett megjelenítendő nevet jeleníti meg. A munkamenet létrehozásakor másik megjelenítendő nevet is hozzárendelhet.

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

A PSSessions változóban is menthető. Az alábbi parancs lekéri a PSSessions munkameneteket, és menti őket a $ps123 változóba.

$ps123 = Get-PSSession

A PSSession-parancsmagok használatakor a PSSession-ra az azonosítója, a neve vagy a példányazonosítója (GUID) alapján hivatkozhat. Az alábbi parancs lekéri a PSSession azonosítóját, és menti a $ps 01 változóba.

$ps01 = Get-PSSession -Id 1

A Windows PowerShell 3.0-tól kezdve a PSSessions megmarad a távoli számítógépen. Az adott távoli számítógépeken létrehozott PSSessions lekéréséhez használja a parancsmag Get-PSSession paraméterét. Az alábbi parancs megjeleníti az Ön által a Server01 távoli számítógépen létrehozott PSSessioneket. Ide tartoznak az aktuális munkamenetben, valamint a helyi számítógépen vagy más számítógépeken létrehozott pssessionsok.

Get-PSSession -ComputerName Server01

A Windows PowerShell 2.0-ban Get-PSSession csak az aktuális munkamenetben létrehozott PSSessions-t kapja meg. Nem kap olyan PSSessionokat, amelyeket más munkamenetekben vagy más számítógépeken hoztak létre, még akkor sem, ha a munkamenetek csatlakoznak, és parancsokat futtatnak a helyi számítógépen.

Parancsok futtatása PSSession-ben

Egy vagy több PSSessions parancs futtatásához használja a Invoke-Command parancsmagot. Használja a Munkamenet paramétert a PSSessions meghatározásához, és a ScriptBlock paramétert a parancs megadásához.

Ha például egy Get-ChildItem ("dir") parancsot szeretne futtatni a $ps 123 változóban mentett három PSSessions mindegyikében, írja be a következőt:

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

PSSessions törlése

Ha befejezte a PSSession használatát, a Remove-PSSession parancsmaggal törölje a PSSession-t, és engedje fel a használt erőforrásokat.

Remove-PSSession -Session $ps

vagy

Remove-PSSession -Id 1

A PSSession távoli számítógépről való eltávolításához használja a parancsmag Remove-PSSession paraméterét.

Remove-PSSession -ComputerName Server01 -Id 1

Ha nem törli a PSSessiont, a PSSession addig használható marad, amíg le nem jár.

A parancsmag New-PSSessionOption paraméterével is beállíthat egy tétlen PSSession lejárati idejét. További információ: New-PSSessionOption.

A PSSession parancsmagok

A PSSession parancsmagok listájához írja be a következőt:

Get-Help *-PSSession
  • Connect-PSSession: PSSession csatlakoztatása az aktuális munkamenethez
  • PSSession-leválasztás: Leválasztja a PSSession-t az aktuális munkamenetből
  • Enter-PSSession: Interaktív munkamenet indítása
  • Exit-PSSession: Interaktív munkamenet befejezése
  • Get-PSSession: Lekéri a PSSessionst az aktuális munkamenetben
  • Új PSSession: Új PSSession létrehozása helyi vagy távoli számítógépen
  • Receive-PSSession: Lekéri a leválasztott munkamenetben futtatott parancsok eredményeit
  • Remove-PSSession: Törli a PSSessionst az aktuális munkamenetben

Jegyzet

A leválasztott munkamenetek támogatása csak Windows rendszeren érhető el. A Connect-PSSession, Disconnect-PSSessionés Receive-PSSession parancsmagok csak Windows rendszeren érhetők el. A leválasztott munkamenetekkel kapcsolatos további információkért lásd a about_Remote_Disconnected_Sessioncímű részt.

További információkért

A PSSessions szolgáltatással kapcsolatos további információkért lásd: about_PSSession_Details.

Lásd még