PowerShell ' Samodejne spremenljivke ” so bistvenega pomena za upravljanje sistema, avtomatizacijo in skriptne dejavnosti. Te spremenljivke je vgradilo izvajalno okolje PowerShell in služijo kot ograde za shranjevanje in sklicevanje na določene informacije med izvajanjem skripta ali ukaza. Učinkovito razumevanje in uporaba teh samodejnih spremenljivk lahko močno izboljšata učinkovitost in funkcionalnost skriptov PowerShell.
Namen tega članka je raziskati koncept »samodejnih spremenljivk« v PowerShell, njihov pomen in kako jih je mogoče uporabiti v različnih scenarijih.
Kaj so samodejne spremenljivke v lupini PowerShell?
Za začetek se poglobimo v definicijo ' Samodejne spremenljivke ”. Te spremenljivke so vnaprej določene in jih PowerShell samodejno ustvari med izvajanjem skripta. Služijo različnim namenom, vključno z zagotavljanjem informacij o sistemu, argumentih ukazne vrstice, s skripti povezanih podrobnostih in še veliko več.
PowerShell ponuja več »samodejnih spremenljivk« in vsaka od njih služi posebnemu namenu pri izvajanju skripta. Te spremenljivke so naslednje:
1. $PSVersionTable
Ena temeljnih samodejnih spremenljivk v lupini PowerShell je ' $PSVersionTable ”. Ta spremenljivka omogoča razvijalcem skriptov, da ugotovijo, katera različica lupine PowerShell se uporablja, kar je lahko ključnega pomena pri obravnavi združljivosti in razpoložljivosti določenih funkcij in funkcij.
S to spremenljivko so povezane naslednje lastnosti:
PSVersion: Vrne številko različice PowerShell.
Izdaja PS: Za PowerShell 4 in starejše različice ter PowerShell 5.1 v različicah sistema Windows s polnimi funkcijami ima ta lastnost vrednost »Namizje«. Ta lastnost ima vrednost Core za PowerShell 6 in novejše, pa tudi Windows PowerShell 5.1 za izdaje z nizkim odtisom, kot sta Windows Nano Server ali Windows IoT.
GitCommitId: Pridobi ID objave GitHub izvornih datotek.
VI: Beleži podatke o računalniškem sistemu, ki ga uporablja PowerShell.
Platforma: Vrne podporno platformo operacijskega sistema. Unix ima vrednost v sistemih Linux in macOS. Oglejte si $IsMacOs in $IsLinux.
PSCompatibleVersions: Vrnejo se različice PowerShell, ki so združljive s trenutno različico.
PSRemotingProtocolVersion: Vrne številko različice protokola za oddaljeno upravljanje PowerShell.
SerializationVersion: Vrne različico metode serializacije.
WSManStackVersion: Vrne številko različice sklada WS-Management.
$ PSVersionTable
2. $Args
Druga pomembna samodejna spremenljivka v PowerShell je ' $Args «, ki vsebuje niz argumentov ukazne vrstice, posredovanih skriptu ali funkciji. Ta spremenljivka omogoča razvijalcem, da dinamično obdelujejo in manipulirajo s podanimi argumenti v svojih skriptih.
Ko definirate funkcijo, lahko za deklaracijo parametrov uporabite ključno besedo »param« ali dodate seznam parametrov, ločenih z vejicami, v oklepajih za imenom funkcije. Spremenljivka »$Args« dejanja dogodka shranjuje objekte, ki služijo kot ograda za parametre dogodka dogodka, ki se obravnava:
za vsakogar ( $arg v $Args ) {Write-Host $arg
}
3. $MyInvocation
' $MyInvocation ” podaja ključne podatke o ozadju skripta ali postopka, ki se trenutno izvaja. Ponuja lastnosti, kot so ime skripta, številka vrstice skripta in ali se skript izvaja interaktivno ali neinteraktivno. Te lastnosti pomagajo razvijalcem skriptov implementirati logiko razvejanja, definirati mehanizme za obravnavanje napak ali ustvariti smiselno beleženje in poročanje:
$ MyInvocation
4. $Error
Manj znana samodejna spremenljivka ' $Error ”, učinkovito zajame vsa sporočila o napakah ali izjeme, ki se pojavijo med izvajanjem skripta. Do »$Error« lahko dostopate, da pridobite določene podrobnosti o napakah, kot so sporočila o izjemah, sledi sklada ali kode napak, kar omogoča podrobno analizo in odpravljanje napak.
Najnovejša napaka je predstavljena s prvim objektom napake v nizu ' $Error[0] “. Uporabite lahko skupno možnost ErrorAction z vrednostjo »Ignore«, da preprečite dodajanje napak v matriko »$Error«.
Recimo, da smo vnesli točen ukaz:
ip [ onfig
Zdaj, če vnesemo cmdlet »$Error«:
$ Napaka
5. $PSCmdlet
Pri delu z moduli PowerShell je samodejna spremenljivka ' $PSCmdlet « začne veljati. Ta spremenljivka omogoča dostop do trenutnega primerka ukaza cmdlet ali funkcije, ki se kliče, kar olajša neposredno interakcijo z njegovimi lastnostmi in metodami.
Z uporabo »$PSCmdlet« lahko napredni razvijalci skriptov natančno nastavijo in izboljšajo vedenje modulov z razširitvijo ali spreminjanjem vgrajenih funkcij. Atribute in metode predmeta lahko uporabite v svojem ukazu cmdlet ali funkcijski kodi kot odgovor na merila uporabe:
funkcijo typeof-psCmdlet {[ cmdletBinding ( ) ] param ( )
odmev 'vrsta` $psCmdlet je $($psCmdlet.GetType() .Polno ime)'
}
typeof-psCmdlet
Poleg zgoraj omenjenih spremenljivk PowerShell vključuje samodejne spremenljivke, kot so $HOME, $PROFILE, $PWD in številne druge, ki služijo različnim namenom, kot je dostop do vnosa, sledenje napakam, pridobivanje informacij o okolju, upravljanje parametrov in še veliko več. Te spremenljivke so navedene spodaj:
Samodejne spremenljivke | Opis |
$$ | Vsebuje zadnji žeton v prejšnji vrstici, ki jo je prejela seja PowerShell. |
$? | Shrani status izvajanja zadnjega ukaza. |
$^ | Vsebuje prvi žeton zadnje vrstice, ki jo je prejela seja. |
$_ | Predstavlja trenutni predmet v cevovodu. |
$ConsoleFileName | Vsebuje pot do datoteke konzole (.psc1), ki je bila nazadnje uporabljena v seji. |
$EnabledExperimentalFeatures | Vsebuje seznam omogočenih eksperimentalnih funkcij. |
$Event | Vsebuje objekt »PSEventArgs«, ki predstavlja dogodek, ki se obdeluje. |
$EventArgs | Vsebuje prvi argument dogodka dogodka, ki se obdeluje. |
$EventSubscriber | Predstavlja naročnika dogodka dogodka, ki se obdeluje. |
$ExecutionContext | Predstavlja kontekst izvajanja gostitelja PowerShell. |
$false | Predstavlja logično vrednost »False«. |
$foreach | Vsebuje popisovalec zanke »za vsakega«. |
$HOME | Vsebuje celotno pot do uporabnikovega domačega imenika. |
$Host | Predstavlja trenutno gostiteljsko aplikacijo za PowerShell. |
$input | Služi kot popisovalec za vse vnose, posredovane funkciji ali skriptu. |
$IsCoreCLR | Označuje, ali se seja izvaja v izvajalnem okolju .NET Core (CoreCLR). |
$IsLinux | Označuje, ali se seja izvaja v operacijskem sistemu Linux. |
$IsMacOS | Označuje, ali se seja izvaja v operacijskem sistemu MacOS. |
$IsWindows | Prepozna, ali se seja izvaja v operacijskem sistemu Windows. |
$LASTEXITCODE | Shrani izhodno kodo zadnjega izvornega programa ali skripta PowerShell. |
$Matches | Vsebuje ujemajoče se nize iz operatorjev »-match« in »-notmatch«. |
$NestedPromptLevel | Sledi trenutni ravni poziva v ugnezdenih ukazih ali scenarijih odpravljanja napak. |
$null | Predstavlja ničelno ali prazno vrednost. |
$PID | Vsebuje identifikator procesa (PID) seje PowerShell. |
$PROFILE | Vsebuje celotno pot profila PowerShell za trenutnega uporabnika in gostiteljsko aplikacijo. |
$PSBoundParameters | Vsebuje slovar parametrov, posredovanih skriptu ali funkciji, in njihovih vrednosti. |
$PSCommandPath | Vsebuje celotno pot in ime datoteke skripta, ki se izvaja. |
$PSKultura | Odraža kulturo trenutnega izvajalnega prostora PowerShell. |
$PSEdition | Vsebuje informacije o izdaji PowerShell. |
$PSHOME | Vsebuje celotno pot do namestitvenega imenika PowerShell. |
$PSItem | Enako kot $_, predstavlja trenutni predmet v cevovodu. |
$PSScriptRoot | Vsebuje celotno pot nadrejenega imenika izvajalnega skripta. |
$PSSenderInfo | Vsebuje informacije o uporabniku, ki je začel PSSession. |
$PSUICulture | Odraža kulturo uporabniškega vmesnika (UI), konfigurirano v operacijskem sistemu. |
$PWD | Predstavlja trenutni delovni imenik seje PowerShell. |
$Sender | Vsebuje predmet, ki je ustvaril dogodek. |
$ShellId | Vsebuje identifikator trenutne lupine. |
$StackTrace | Shrani sled sklada za najnovejšo napako. |
$stikalo | Vsebuje enumerator stavka »Switch«. |
$to | Nanaša se na primerek razreda v blokih skriptov, ki razširjajo razrede. |
$true | Predstavlja logično vrednost »True«. |
Vse »samodejne spremenljivke« v lupini PowerShell najdete tako, da zaženete spodnji ukaz:
Get-Variable
Zaključek
“ Samodejne spremenljivke ” tvorijo hrbtenico skriptov PowerShell, ki razvijalcem omogočajo, da pridobijo informacije o sistemu, argumentih ukazne vrstice, kontekstu izvajanja skriptov in več. Z uporabo samodejnih spremenljivk, kot so »$PSVersionTable«, »$Args«, »$MyInvocation«, »$Error« in druge, lahko razvijalci skriptov PowerShell ustvarijo poenostavljene prakse sistemske administracije.