PowerShell Automatikus változók ” nélkülözhetetlenek a rendszerfelügyelethez, az automatizáláshoz és a szkriptelési tevékenységekhez. Ezeket a változókat a PowerShell futtatókörnyezete beépítette, és helyőrzőként szolgál bizonyos információk tárolására és hivatkozására egy parancsfájl vagy parancs végrehajtása során. Ezen automatikus változók hatékony megértése és felhasználása nagymértékben növelheti a PowerShell-szkriptek hatékonyságát és funkcionalitását.
Ennek a cikknek az a célja, hogy feltárja az „automatikus változók” fogalmát a PowerShellben, azok jelentőségét, és azt, hogy miként használhatók fel különböző forgatókönyvekben.
Mik azok az automatikus változók a PowerShellben?
Kezdésként nézzük meg a „ Automatikus változók ”. Ezek a változók előre meghatározottak, és a PowerShell automatikusan létrehozza őket a szkript végrehajtása során. Ezek különböző célokat szolgálnak, beleértve a rendszerről szóló információkat, a parancssori argumentumokat, a szkripttel kapcsolatos részleteket és még sok mást.
A PowerShell számos „Automatikus változót” kínál, és mindegyikük külön célt szolgál a szkript-végrehajtás során. Ezek a változók a következők:
1. $PSVersionTable
A PowerShell egyik alapvető automatikus változója a „ $PSVersionTable ”. Ez a változó lehetővé teszi a szkriptfejlesztők számára, hogy megbizonyosodjanak a PowerShell használt verziójáról, ami kulcsfontosságú lehet bizonyos funkciók és funkciók kompatibilitása és elérhetősége szempontjából.
A következő tulajdonságok kapcsolódnak ehhez a változóhoz:
PSV-verzió: A PowerShell verziószámát adja vissza.
PSE-kiadás: A PowerShell 4 és korábbi verziók, valamint a PowerShell 5.1 teljes funkcionalitású Windows-verziók esetén ennek a tulajdonságnak az értéke „Asztali”. Ez a jellemző a Core értékkel rendelkezik a PowerShell 6 és újabb verzióihoz, valamint a Windows PowerShell 5.1 értéke alacsony terhelésű kiadásokhoz, például a Windows Nano Server vagy a Windows IoT.
GitCommitId: Lekéri a forrásfájlok GitHub véglegesítési azonosítóját.
TE: Naplózza a PowerShell által használt számítógéprendszer adatait.
Felület: Visszaadja az operációs rendszer támogató platformját. A Unix értéket jelent Linuxon és macOS-en. Nézze meg a $IsMacOs és a $IsLinux oldalait.
PSCompatibleVersions: Az aktuális verzióval kompatibilis PowerShell-verziók kerülnek visszaadásra.
PSRemotingProtocolVersion: A PowerShell távfelügyeleti protokoll verziószámát adja vissza.
Sorozati verzió: A szerializációs módszer verzióját adja vissza.
WSManStackVersion: A WS-Management verem verziószámát adja vissza.
$ PSVversionTable
2. $Args
Egy másik lényeges automatikus változó a PowerShellben a „ $Args ”, amely egy parancsfájlnak vagy függvénynek átadott parancssori argumentumok tömbjét tartalmazza. Ez a változó felhatalmazza a fejlesztőket arra, hogy dinamikusan dolgozzák fel és kezeljék a megadott argumentumokat a szkripteiken belül.
Függvény definiálásakor használhatja a 'param' kulcsszót a paraméterek deklarálásához, vagy hozzáadhat egy vesszővel elválasztott paraméterlistát zárójelben a függvény neve után. Az eseményművelet „$Args” változója olyan objektumokat tárol, amelyek helyőrzőként szolgálnak a kezelt esemény eseményparaméterei számára:
az egyes ( $arg ban ben $Args ) {Write-Host $arg
}
3. $MyInvocation
A ' $MyInvocation ” változó alapvető háttéradatokat ad a jelenleg futó szkriptről vagy eljárásról. Olyan tulajdonságokat kínál, mint a szkript neve, sorszáma, és hogy a szkript interaktívan vagy nem interaktívan fut-e. Ezek a tulajdonságok segítenek a szkriptfejlesztőknek elágazási logikát megvalósítani, hibakezelési mechanizmusokat meghatározni, vagy értelmes naplózást és jelentéskészítést generálni:
$ MyInvocation
4. $Error
Egy kevésbé ismert automatikus változó $Error ”, hatékonyan rögzíti a szkript végrehajtása során előforduló hibaüzeneteket vagy kivételeket. A „$Error” hozzáférhet bizonyos hibarészletek, például kivételüzenetek, veremnyomok vagy hibakódok lekéréséhez, lehetővé téve a részletes elemzést és hibakeresést.
A legutóbbi hibát a ' tömb első hibaobjektuma jelenti $Error[0] “. Használhatja az ErrorAction közös beállítást „Ignore” értékkel, hogy megakadályozza a hibák hozzáadását a „$Error” tömbhöz.
Tegyük fel, hogy egy pontos parancsot írtunk be:
ip [ onfig
Most, ha beírjuk a „$Error” parancsmagot:
$ Hiba
5. $PSCmdlet
Amikor PowerShell modulokkal dolgozik, az automatikus változó $PSCmdlet ” lép életbe. Ez a változó hozzáférést biztosít a meghívott parancsmag vagy függvény aktuális példányához, megkönnyítve a közvetlen interakciót annak tulajdonságaival és módszereivel.
A „$PSCmdlet” használatával a haladó szkriptfejlesztők finomhangolhatják és javíthatják a modulok viselkedését a beépített funkciók bővítésével vagy módosításával. Használhatja az objektum attribútumait és metódusait a parancsmagban vagy a függvénykódban a használati feltételeknek megfelelően:
funkció typeof-psCmdlet {[ cmdletBinding ( ) ] param ( )
visszhang 'típusa'. $psCmdlet van $($psCmdlet.GetType() .Teljes név)'
}
typeof-psCmdlet
A fent említett változókon kívül a PowerShell olyan automatikus változókat foglal magában, mint a $HOME, $PROFILE, $PWD és még sok más, amelyek különböző célokat szolgálnak, mint például a bemenet elérése, a hibák követése, a környezeti információk lekérése, a paraméterek kezelése és még sok más. Ezeket a változókat az alábbiakban soroljuk fel:
Automatikus változók | Leírás |
$$ | A PowerShell-munkamenet által kapott előző sor utolsó tokent tartalmazza. |
$? | Tárolja az utolsó parancs végrehajtási állapotát. |
$^ | A munkamenet által fogadott utolsó sor első tokenjét tartalmazza. |
$_ | Az aktuális objektumot jelöli a folyamatban. |
$ConsoleFileName | A munkamenetben legutóbb használt konzolfájl (.psc1) elérési útját tartalmazza. |
$EnabledExperimentalFeatures | Az engedélyezett kísérleti funkciók listáját tartalmazza. |
$Event | Tartalmaz egy „PSEventArgs” objektumot, amely a feldolgozás alatt álló eseményt reprezentálja. |
$EventArgs | A feldolgozás alatt álló esemény első eseményargumentumát tartalmazza. |
$EventSubscriber | A feldolgozás alatt álló esemény esemény-előfizetőjét jelöli. |
$ExecutionContext | A PowerShell-gazda végrehajtási környezetét képviseli. |
$false | A „False” logikai értéket képviseli. |
$foreach | Tartalmazza a „for-Each” ciklus felsorolóját. |
$HOME | Tartalmazza a felhasználó kezdőkönyvtárának teljes elérési útját. |
$Host | A PowerShell jelenlegi gazdagép-alkalmazását jelöli. |
$bemenet | Felsorolóként szolgál a függvénynek vagy szkriptnek átadott összes bemenethez. |
$IsCoreCLR | Azt jelzi, hogy a munkamenet a .NET Core Runtime (CoreCLR) rendszeren fut-e. |
$IsLinux | Azt jelzi, ha a munkamenet Linux operációs rendszeren fut. |
$IsMacOS | Azt jelzi, ha a munkamenet MacOS operációs rendszeren fut. |
$IsWindows | Azonosítja, hogy a munkamenet Windows operációs rendszeren fut-e. |
$LASTEXITCODE | Tárolja az utolsó natív program vagy PowerShell-szkript kilépési kódját. |
$ Matches | Egyező karakterláncokat tartalmaz a „-match” és „-notmatch” operátorokból. |
$NestedPromptLevel | Nyomon követi az aktuális prompt szintet a beágyazott parancsokban vagy hibakeresési forgatókönyvekben. |
$null | Nulla vagy üres értéket jelent. |
$PID | A PowerShell-munkamenet folyamatazonosítóját (PID) tartalmazza. |
$PROFIL | Tartalmazza az aktuális felhasználó és gazdagép alkalmazás PowerShell-profiljának teljes elérési útját. |
$PSBoundParameters | A szkriptnek vagy függvénynek átadott paraméterek és azok értékeinek szótárát tartalmazza. |
$PSCommandPath | Tartalmazza a végrehajtott szkript teljes elérési útját és fájlnevét. |
$PSCulture | A jelenlegi PowerShell-futási terület kultúráját tükrözi. |
$PSEdition | A PowerShell-kiadás adatait tartalmazza. |
$PSHOME | A PowerShell telepítési könyvtárának teljes elérési útját tartalmazza. |
$PSItem | Ugyanaz, mint a $_, az aktuális objektumot jelöli a folyamatban. |
$PSScriptRoot | Tartalmazza a végrehajtó szkript szülőkönyvtárának teljes elérési útját. |
$PSSenderInfo | A PSS-sessiont elindító felhasználóról tartalmaz információkat. |
$PSUICulture | Az operációs rendszerben konfigurált felhasználói felület (UI) kultúráját tükrözi. |
$PWD | A PowerShell-munkamenet aktuális munkakönyvtárát jelöli. |
$Sender | Tartalmazza az eseményt generáló objektumot. |
$ShellId | Az aktuális shell azonosítóját tartalmazza. |
$StackTrace | Tárolja a verem nyomkövetését a legutóbbi hibához. |
$kapcsoló | Tartalmazza a „Switch” utasítás felsorolóját. |
$ezt | Az osztályokat kiterjesztő szkriptblokkokban lévő osztály példányára utal. |
$igaz | A „True” logikai értéket képviseli. |
A PowerShell összes „automatikus változója” megtalálható az alábbi parancs futtatásával:
Get-Variable
Következtetés
' Automatikus változók ” alkotják a PowerShell-szkriptelés gerincét, lehetővé téve a fejlesztők számára, hogy információkat szerezzenek a rendszerről, a parancssori argumentumokról, a szkript-végrehajtási környezetről stb. Az olyan automatikus változók felhasználásával, mint a „$PSVersionTable”, „$Args”, „$MyInvocation”, „$Error” és mások, a PowerShell-szkript fejlesztői egyszerűsített rendszeradminisztrációs gyakorlatokat hozhatnak létre.