PowerShell Automatické premenné sú nevyhnutné pre správu systému, automatizáciu a skriptovanie. Tieto premenné sú zabudované v prostredí PowerShell a slúžia ako zástupné symboly na ukladanie a odkazovanie na konkrétne informácie počas vykonávania skriptu alebo príkazu. Pochopenie a efektívne využitie týchto automatických premenných môže výrazne zvýšiť efektivitu a funkčnosť skriptov PowerShell.
Cieľom tohto článku je preskúmať koncept „automatických premenných“ v PowerShell, ich význam a ako ich možno využiť v rôznych scenároch.
Čo sú automatické premenné v PowerShell?
Na začiatok sa ponorme do definície „ Automatické premenné “. Tieto premenné sú preddefinované a automaticky ich vytvára PowerShell počas vykonávania skriptu. Tieto slúžia na rôzne účely, vrátane poskytovania informácií o systéme, argumentov príkazového riadka, podrobností súvisiacich so skriptom a oveľa viac.
PowerShell ponúka niekoľko „automatických premenných“ a každá z nich slúži na odlišný účel pri vykonávaní skriptu. Tieto premenné sú nasledovné:
1. $PSVersionTable
Jednou zo základných automatických premenných v PowerShell je „ $PSVersionTable “. Táto premenná umožňuje vývojárom skriptov zistiť verziu prostredia PowerShell, ktorá sa používa, čo môže byť rozhodujúce pri zvažovaní kompatibility a dostupnosti určitých funkcií a funkcií.
S touto premennou sú spojené nasledujúce vlastnosti:
PSV verzia: Vráti číslo verzie prostredia PowerShell.
PS Edition: Pre PowerShell 4 a staršie verzie, ako aj PowerShell 5.1 vo verziách Windows s plnohodnotnými funkciami, má táto vlastnosť hodnotu „Desktop“. Táto charakteristika má hodnotu Core pre PowerShell 6 a novší, ako aj Windows PowerShell 5.1 pre edície s nízkymi nákladmi, ako je Windows Nano Server alebo Windows IoT.
GitCommitId: Načítava ID odovzdania GitHub zdrojových súborov.
VY: Zaznamenáva informácie o počítačovom systéme, ktorý PowerShell používa.
Plošina: Vráti podpornú platformu operačného systému. Unix má hodnotu pre Linux a MacOS. Pozrite si $IsMacOs a $IsLinux.
PSCompatibleVersions: Vrátia sa verzie prostredia PowerShell, ktoré sú kompatibilné s aktuálnou verziou.
PSRemotingProtocolVersion: Vráti číslo verzie pre protokol vzdialenej správy PowerShell.
Serializačná verzia: Vráti verziu metódy serializácie.
WSManStackVersion: Vráti číslo verzie zásobníka WS-Management.
$ Tabuľka PSV
2. $Args
Ďalšou základnou automatickou premennou v PowerShell je „ $Args “, ktorý obsahuje pole argumentov príkazového riadka odovzdaných skriptu alebo funkcii. Táto premenná umožňuje vývojárom dynamicky spracovávať a manipulovať s poskytnutými argumentmi v rámci ich skriptov.
Pri definovaní funkcie môžete buď použiť kľúčové slovo „param“ na deklarovanie parametrov, alebo môžete pridať zoznam parametrov oddelených čiarkami v zátvorkách za názvom funkcie. Premenná akcie udalosti „$Args“ ukladá objekty, ktoré slúžia ako zástupné symboly pre parametre udalosti spracovávanej udalosti:
pre každý ( $arg v $Args ) {Write-Host $arg
}
3. $MyInvocation
' $MyInvocation ” premenná poskytuje dôležité základné údaje o skripte alebo procedúre, ktorá je momentálne spustená. Ponúka vlastnosti, ako je názov skriptu, číslo riadku skriptu a či sa skript spúšťa interaktívne alebo neinteraktívne. Tieto vlastnosti pomáhajú vývojárom skriptov implementovať logiku vetvenia, definovať mechanizmy spracovania chýb alebo generovať zmysluplné protokolovanie a hlásenie:
$ MyInvocation
4. $Error
Menej známa automatická premenná „ $Error “, efektívne zachytáva všetky chybové hlásenia alebo výnimky, ktoré sa vyskytnú počas vykonávania skriptu. „$Error“ je prístupný na získanie konkrétnych podrobností o chybách, ako sú správy o výnimkách, sledovanie zásobníka alebo chybové kódy, čo umožňuje podrobnú analýzu a ladenie.
Najnovšia chyba je reprezentovaná prvým chybovým objektom v poli “ $Error[0] “. Môžete použiť spoločnú možnosť ErrorAction s hodnotou „Ignore“ na zastavenie pridávania chýb do poľa „$Error“.
Predpokladajme, že sme napísali presný príkaz:
IP [ onfig
Ak teraz zadáme cmdlet „$Error“:
$ Chyba
5. $PSCmdlet
Pri práci s modulmi PowerShell sa automatická premenná „ $PSCmdlet “ nadobudne účinnosť. Táto premenná poskytuje prístup k aktuálnej inštancii rutiny cmdlet alebo vyvolanej funkcie, čím uľahčuje priamu interakciu s jej vlastnosťami a metódami.
Pomocou „$PSCmdlet“ môžu pokročilí vývojári skriptov doladiť a zlepšiť správanie modulov rozšírením alebo úpravou vstavaných funkcií. Atribúty a metódy objektu môžete použiť vo svojom cmdlet alebo kóde funkcie ako odpoveď na kritériá použitia:
funkciu typeof-psCmdlet {[ cmdletBinding ( ) ] param ( )
ozvena 'typ ' $psCmdlet je $($psCmdlet.GetType() .Celé meno)'
}
typeof-psCmdlet
Okrem vyššie uvedených premenných PowerShell zahŕňa automatické premenné ako $HOME, $PROFILE, $PWD a mnohé ďalšie, ktoré slúžia na rôzne účely, ako je prístup k vstupu, sledovanie chýb, získavanie informácií o prostredí, správa parametrov a mnoho ďalších. Tieto premenné sú uvedené nižšie:
Automatické premenné | Popis |
$$ | Obsahuje posledný token v predchádzajúcom riadku prijatý reláciou PowerShell. |
$? | Ukladá stav vykonania posledného príkazu. |
$^ | Obsahuje prvý token posledného riadku prijatého reláciou. |
$_ | Predstavuje aktuálny objekt v potrubí. |
$ConsoleFileName | Obsahuje cestu k súboru konzoly (.psc1), ktorý bol naposledy použitý v relácii. |
$EnabledExperimentalFeatures | Obsahuje zoznam povolených experimentálnych funkcií. |
$Event | Obsahuje objekt „PSEventArgs“ predstavujúci spracovávanú udalosť. |
$EventArgs | Obsahuje prvý argument udalosti spracovávanej udalosti. |
$EventSubscriber | Predstavuje odberateľa udalosti spracovávanej udalosti. |
$ExecutionContext | Predstavuje kontext vykonávania hostiteľa PowerShell. |
$false | Predstavuje boolovskú hodnotu „False“. |
$foreach | Obsahuje enumerátor cyklu „pre každého“. |
$HOME | Obsahuje úplnú cestu domovského adresára používateľa. |
$Hostiteľ | Predstavuje aktuálnu hostiteľskú aplikáciu pre PowerShell. |
$vstup | Slúži ako enumerátor pre všetok vstup odovzdaný funkcii alebo skriptu. |
$IsCoreCLR | Označuje, či relácia beží na .NET Core Runtime (CoreCLR). |
$IsLinux | Označuje, či je relácia spustená v operačnom systéme Linux. |
$IsMacOS | Označuje, či je relácia spustená v operačnom systéme MacOS. |
$IsWindows | Identifikuje, či je relácia spustená v operačnom systéme Windows. |
$LASTEXITCODE | Ukladá ukončovací kód posledného natívneho programu alebo skriptu PowerShell. |
$Zápasy | Obsahuje zhodné reťazce z operátorov „-match“ a „-notmatch“. |
$ NestedPromptLevel | Sleduje aktuálnu úroveň výzvy vo vnorených príkazoch alebo scenároch ladenia. |
$null | Predstavuje nulovú alebo prázdnu hodnotu. |
$ PID | Obsahuje identifikátor procesu (PID) relácie PowerShell. |
$PROFIL | Obsahuje úplnú cestu profilu PowerShell pre aktuálneho používateľa a hostiteľskú aplikáciu. |
$PSBoundParameters | Obsahuje slovník parametrov odovzdaných skriptu alebo funkcii a ich hodnoty. |
$PSCommandPath | Obsahuje úplnú cestu a názov súboru spúšťaného skriptu. |
$PSCulture | Odráža kultúru aktuálneho prevádzkového priestoru PowerShell. |
$PS Edition | Obsahuje informácie o vydaní PowerShell. |
$PSHOME | Obsahuje úplnú cestu k inštalačnému adresáru PowerShell. |
$PSItem | Rovnako ako $_, predstavuje aktuálny objekt v potrubí. |
$PSScriptRoot | Obsahuje úplnú cestu k nadradenému adresáru vykonávaného skriptu. |
$PSSenderInfo | Obsahuje informácie o používateľovi, ktorý spustil PSSession. |
$PSUICkultúra | Odráža kultúru používateľského rozhrania (UI) nakonfigurovanú v operačnom systéme. |
$PWD | Predstavuje aktuálny pracovný adresár relácie PowerShell. |
$Sender | Obsahuje objekt, ktorý vygeneroval udalosť. |
$ShellId | Obsahuje identifikátor aktuálneho shellu. |
$StackTrace | Uloží stopu zásobníka pre najnovšiu chybu. |
$ prepínač | Obsahuje enumerátor príkazu „Switch“. |
$this | Odkazuje na inštanciu triedy v blokoch skriptov, ktoré rozširujú triedy. |
$pravda | Predstavuje boolovskú hodnotu „True“. |
Všetky „automatické premenné“ v PowerShell nájdete spustením nižšie uvedeného príkazu:
Get-Variable
Záver
“ Automatické premenné ” tvoria chrbticu skriptovania PowerShell, čo umožňuje vývojárom získať informácie o systéme, argumenty príkazového riadka, kontext vykonávania skriptu a ďalšie. Využitím automatických premenných, ako sú „$PSVersionTable“, „$Args“, „$MyInvocation“, „$Error“ a ďalšie, môžu vývojári skriptov PowerShell vytvárať zjednodušené postupy správy systému.