about_PSSessions
Rövid leírás
Ismerteti a PowerShell-munkameneteket (PSSessions), és ismerteti, hogyan hozhat létre állandó kapcsolatot 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 egy parancsmag ComputerName paraméterét, vagy létrehozhat egy PowerShell-munkamenetet (PSSession), és futtathat parancsokat a PSSession-ban.
PSSession létrehozásakor a PowerShell állandó kapcsolatot létesít a távoli számítógéppel. PsSession használatával több kapcsolódó parancsot futtathat egy távoli számítógépen. Az ugyanabban a PSSession-ban futó parancsok megoszthatnak adatokat, például változók, aliasok és függvények értékeit.
PsSessiont is létrehozhat a helyi számítógépen, és futtathat benne parancsokat. A helyi PSSession a PowerShell-remoting infrastruktúrát használja a PSSession létrehozásához és karbantartásához.
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 (vagy a kapcsolat távoli végén vagy "kiszolgálóoldalán" található számítógépen) van fenntartva. Ennek eredményeképpen Windows rendszeren leválaszthatja a pssession-t egy távoli Windows-számítógépen, és később ugyanabból a számítógépből vagy egy másik Windows-számítógépről csatlakozhat hozzá.
Ez a témakör a PSSessions létrehozásának, használatának, lekérésének és törlésének módját ismerteti. További információ: about_PSSession_Details.
Megjegyzés: A PSSessions a PowerShell-remoting infrastruktúrát használja. A PSSessions használatához a helyi és távoli számítógépeket újra kell konfigurálni. 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 adhat hozzá és hozhat létre. Az automatikusan elinduló munkamenettől eltérően azonban szabályozhatja a létrehozott PSSessions-t. Lekérheti, létrehozhatja, konfigurálhatja és eltávolíthatja őket, leválaszthatja és újracsatlakoztathatja őket, és több parancsot is futtathat ugyanabban a PSSessionban. A PSSession mindaddig elérhető marad, amíg ön nem törli vagy túllépi az időkorlátot.
Általában PSSessiont hoz létre, amellyel egy távoli számítógépen kapcsolódó parancsok sorozatát futtathatja. 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 Enter-PSSession
parancsmag ComputerName paraméterét Invoke-Command
használja egy távoli parancs futtatásához vagy egy interaktív munkamenet elindí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 vagy egyetlen interaktív munkamenetnél többre.
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 állandó kapcsolatra van szüksége egy távoli számítógéphez. 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 számítógépen nem kapcsolódó parancsokat futtathat.
Ha a vagy Enter-PSSession
a ComputerName paraméterét Invoke-Command
használja, 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.
A ComputerName paraméterrel (például Get-Eventlog
és Get-WmiObject
) rendelkező egyéb parancsmagok különböző újramegjelenítési 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 ComputerName paraméterét New-PSSession
.
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 létrehozza a PSSessiont, New-PSSession
és visszaad egy, a PSSession-t jelképező objektumot. A PSSession létrehozásakor mentheti az objektumot egy változóba, vagy egy Get-PSSession
paranccsal később lekérheti a PSSessiont.
A következő 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
Ha több számítógépen szeretne PSSessionst létrehozni, használja a parancsmag ComputerName paraméterét New-PSSession
. Í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
egy PSSession-t hoz létre az egyes távoli számítógépeken.
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
visszaad.
A következő parancs lekéri az aktuális munkamenetben létrehozott összes PSSessions-t.
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 PSSessionst egy változóba is mentheti. Az alábbi parancs lekéri a PSSessions parancsot, és menti őket a $ps 123 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. A következő 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 a távoli számítógépen van fenntartva. Az egyes távoli számítógépeken létrehozott PSSessions lekéréséhez használja a Get-PSSession
parancsmag ComputerName paraméterét. A következő parancs lekéri a Server01 távoli számítógépen létrehozott PSSessions parancsot. Ide tartoznak az aktuális munkamenetben és a helyi számítógépen vagy más számítógépeken létrehozott PSSessions.
Get-PSSession -ComputerName Server01
A Windows PowerShell 2.0-s Get-PSSession
verzióban csak az aktuális munkamenetben létrehozott PSSessions lesz lekérve. Nem kap olyan PSSessionst, amelyek más munkamenetekben vagy más számítógépeken lettek létrehozva, még akkor sem, ha a munkamenetek csatlakoznak a helyi számítógépen, és parancsokat futtatnak.
Parancsok futtatása PSSession-ban
Egy vagy több PSSessions parancs futtatásához használja a Invoke-Command
parancsmagot.
A parancs megadásához használja a Munkamenet paramétert a PSSessions és a ScriptBlock paraméter 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 végzett a PSSession szolgáltatással, a Remove-PSSession
parancsmaggal törölje a PSSession-t, és engedje el 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 ComputerName paraméterét Remove-PSSession
.
Remove-PSSession -ComputerName Server01 -Id 1
Ha nem törli a PSSessiont, a PSSession mindaddig használható marad, amíg időtúllépés nem történik.
A parancsmag IdleTimeout paraméterével New-PSSessionOption
is beállíthat egy üresjárati 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
- Leválasztás-PSSession: A PSSession leválasztása az aktuális munkamenetről
- Enter-PSSession: Interaktív munkamenet indítása
- Exit-PSSession: Interaktív munkamenet befejezése
- Get-PSSession: Lekéri a PSSessions-t az aktuális munkamenetben
- New-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 PSSessions-t az aktuális munkamenetben
Megjegyzés
A leválasztott munkamenetek csak Windows rendszeren támogatottak. A Connect-PSSession
, Disconnect-PSSession
, és Receive-PSSession
parancsmagok csak Windows rendszeren érhetők el. További információ a leválasztott munkamenetekről: about_Remote_Disconnected_Session
További információk
A PSSessions szolgáltatással kapcsolatos további információkért lásd: about_PSSession_Details.