PowerShellin ' Automaattiset muuttujat ” ovat välttämättömiä järjestelmänhallinnan, automaation ja komentosarjatoimintojen kannalta. Nämä muuttujat ovat PowerShell-ajonaikaisen sisäänrakennettuja, ja ne toimivat paikkamerkkinä tiettyjen tietojen tallentamiseen ja viittaamiseen komentosarjan tai komennon suorittamisen aikana. Näiden automaattisten muuttujien ymmärtäminen ja tehokas hyödyntäminen voi parantaa huomattavasti PowerShell-komentosarjojen tehokkuutta ja toimivuutta.
Tämän artikkelin tarkoituksena on tutkia PowerShellin 'automaattisten muuttujien' käsitettä, niiden merkitystä ja sitä, miten niitä voidaan hyödyntää eri skenaarioissa.
Mitä ovat automaattiset muuttujat PowerShellissä?
Aluksi syvennytään määritelmään ' Automaattiset muuttujat ”. Nämä muuttujat ovat ennalta määritettyjä, ja PowerShell luo ne automaattisesti komentosarjan suorittamisen aikana. Niitä käytetään eri tarkoituksiin, mukaan lukien tiedot järjestelmästä, komentoriviargumentit, komentosarjaan liittyvät tiedot ja paljon muuta.
PowerShell tarjoaa useita 'automaattisia muuttujia', ja jokainen niistä palvelee erillistä tarkoitusta komentosarjan suorittamisessa. Nämä muuttujat ovat seuraavat:
1. $PSVersionTable
Yksi PowerShellin tärkeimmistä automaattisista muuttujista on ' $PSVersionTable ”. Tämän muuttujan avulla komentosarjan kehittäjät voivat varmistaa käytetyn PowerShell-version, mikä voi olla ratkaisevaa, kun tarkastellaan tiettyjen ominaisuuksien ja toimintojen yhteensopivuutta ja saatavuutta.
Seuraavat ominaisuudet liittyvät tähän muuttujaan:
PSV-versio: Palauttaa PowerShell-versionumeron.
PSE-versio: PowerShell 4:lle ja sitä vanhemmille versioille sekä PowerShell 5.1:lle täydellisissä Windows-versioissa tämän ominaisuuden arvo on 'Desktop'. Tämän ominaisuuden arvo on Core PowerShell 6:lle ja uudemmille, samoin kuin Windows PowerShell 5.1:n arvo pienille versioille, kuten Windows Nano Server tai Windows IoT.
GitCommitId: Hakee lähdetiedostojen GitHub-toimitustunnuksen.
SINÄ: Kirjaa tiedot PowerShellin käyttämästä tietokonejärjestelmästä.
Alusta: Palauttaa käyttöjärjestelmää tukevan alustan. Unixilla on arvoa Linuxissa ja macOS:ssä. Katso $IsMacOs ja $IsLinux.
PSCompatibleVersions: PowerShell-versiot, jotka ovat yhteensopivia nykyisen version kanssa, palautetaan.
PSRemotingProtocolVersion: Palauttaa PowerShell-etähallintaprotokollan versionumeron.
Sarjaversio: Palauttaa serialisointimenetelmän version.
WSManStackVersion: Palauttaa WS-Management-pinon versionumeron.
$ PSVversiotaulukko
2. $Args
Toinen tärkeä automaattinen muuttuja PowerShellissä on ' $Args ”, joka sisältää joukon komentoriviargumentteja, jotka välitetään skriptille tai funktiolle. Tämä muuttuja antaa kehittäjille mahdollisuuden käsitellä ja käsitellä annettuja argumentteja dynaamisesti komentosarjoissaan.
Kun määrität funktiota, voit joko käyttää 'param'-avainsanaa parametrien ilmoittamiseen tai voit lisätä pilkuilla erotetun luettelon parametreista suluissa funktion nimen perään. Tapahtumatoiminnon '$Args' -muuttuja tallentaa objektit, jotka toimivat käsiteltävän tapahtuman tapahtumaparametrien paikkamerkkinä:
jokaiselle ( $arg sisään $Args ) {Write-Host $arg
}
3. $MyInvocation
' $MyInvocation ”-muuttuja antaa tärkeitä taustatietoja tällä hetkellä käynnissä olevasta komentosarjasta tai proseduurista. Se tarjoaa ominaisuuksia, kuten komentosarjan nimen, komentosarjan rivin numeron ja sen, ajetaanko komentosarjaa interaktiivisesti vai ei-interaktiivisesti. Nämä ominaisuudet auttavat komentosarjan kehittäjiä toteuttamaan haaroituslogiikkaa, määrittelemään virheenkäsittelymekanismeja tai luomaan mielekkäitä kirjauksia ja raportteja:
$ MyInvocation
4. $Error
Vähemmän tunnettu automaattinen muuttuja $Error ”, kaappaa tehokkaasti kaikki virheilmoitukset tai poikkeukset, jotka tapahtuvat komentosarjan suorittamisen aikana. '$Error' -sovelluksella voidaan hakea tiettyjä virhetietoja, kuten poikkeusviestejä, pinojäljitystä tai virhekoodeja, mikä mahdollistaa yksityiskohtaisen analyysin ja virheenkorjauksen.
Uusinta virhettä edustaa taulukon ensimmäinen virheobjekti ' $Error[0] '. Voit käyttää ErrorAction yleistä vaihtoehtoa, jonka arvo on 'Ignore', estääksesi virheiden lisäämisen '$Error' -taulukkoon.
Oletetaan, että kirjoitimme tarkan komennon:
ip [ kuvassa
Jos nyt syötetään '$Error' -cmdlet:
$ Virhe
5. $PSCmdlet
Kun työskentelet PowerShell-moduulien kanssa, automaattinen muuttuja ' $PSCmdlet ' astuu voimaan. Tämä muuttuja tarjoaa pääsyn kutsuttavan cmdlet- tai funktion nykyiseen esiintymään, mikä helpottaa suoraa vuorovaikutusta sen ominaisuuksien ja menetelmien kanssa.
Käyttämällä '$PSCmdlet' -ohjelmaa edistyneet skriptien kehittäjät voivat hienosäätää ja parantaa moduulien toimintaa laajentamalla tai muokkaamalla sisäänrakennettuja toimintoja. Voit käyttää objektin attribuutteja ja menetelmiä cmdlet- tai funktiokoodissasi käyttöehtojen mukaisesti:
toiminto typeof-psCmdlet {[ cmdletBinding ( ) ] param ( )
kaiku 'tyyppi ` $psCmdlet On $($psCmdlet.GetType() .Koko nimi)'
}
typeof-psCmdlet
Edellä mainittujen muuttujien lisäksi PowerShell sisältää automaattisia muuttujia, kuten $HOME, $PROFILE, $PWD ja monia muita, jotka palvelevat eri tarkoituksia, kuten syötteiden käyttöä, virheiden seurantaa, ympäristötietojen hakemista, parametrien hallintaa ja paljon muuta. Nämä muuttujat on lueteltu alla:
Automaattiset muuttujat | Kuvaus |
$$ | Säilyttää PowerShell-istunnon vastaanottaman edellisen rivin viimeisen tunnuksen. |
$? | Tallentaa viimeisen komennon suoritustilan. |
$^ | Sisältää istunnon vastaanottaman viimeisen rivin ensimmäisen tunnuksen. |
$_ | Edustaa nykyistä kohdetta liukuhihnassa. |
$ConsoleFileName | Sisältää istunnossa viimeksi käytetyn konsolitiedoston (.psc1) polun. |
$EnabledExperimentalFeatures | Sisältää luettelon käyttöönotetuista kokeellisista ominaisuuksista. |
$Event | Sisältää 'PSEventArgs' -objektin, joka edustaa käsiteltävää tapahtumaa. |
$EventArgs | Sisältää käsiteltävän tapahtuman ensimmäisen tapahtuma-argumentin. |
$EventSubscriber | Edustaa käsiteltävän tapahtuman tilaajaa. |
$ExecutionContext | Edustaa PowerShell-isännän suorituskontekstia. |
$false | Edustaa Boolen arvoa 'False'. |
$foreach | Sisältää 'for-Each' -silmukan luetteloijan. |
$HOME | Sisältää käyttäjän kotihakemiston koko polun. |
$Host | Edustaa PowerShellin nykyistä isäntäsovellusta. |
$syöttö | Toimii kaikkien funktioon tai komentosarjaan siirrettyjen syötteiden luetteloijana. |
$IsCoreCLR | Osoittaa, onko istunto käynnissä .NET Core Runtimessa (CoreCLR). |
$IsLinux | Osoittaa, onko istunto käynnissä Linux-käyttöjärjestelmässä. |
$IsMacOS | Osoittaa, onko istunto käynnissä MacOS-käyttöjärjestelmässä. |
$IsWindows | Tunnistaa, onko istunto käynnissä Windows-käyttöjärjestelmässä. |
$LASTEXITCODE | Tallentaa viimeisen alkuperäisen ohjelman tai PowerShell-komentosarjan poistumiskoodin. |
$ Matches | Sisältää vastaavat merkkijonot '-match'- ja '-notmatch'-operaattoreista. |
$NestedPromptLevel | Seuraa nykyistä kehotteen tasoa sisäkkäisissä komentoissa tai virheenkorjausskenaarioissa. |
$null | Edustaa nolla- tai tyhjää arvoa. |
$PID | Sisältää PowerShell-istunnon prosessitunnisteen (PID). |
$PROFIILI | Sisältää PowerShell-profiilin koko polun nykyiselle käyttäjälle ja isäntäsovellukselle. |
$PSBoundParameters | Sisältää sanakirjan komentosarjalle tai funktiolle välitetyistä parametreista ja niiden arvoista. |
$PSCommandPath | Sisältää suoritettavan skriptin koko polun ja tiedostonimen. |
$PSCulture | Heijastaa nykyisen PowerShell-ajotilan kulttuuria. |
$PSEdition | Sisältää PowerShell-version tiedot. |
$PSHOME | Sisältää PowerShell-asennushakemiston koko polun. |
$PSItem | Sama kuin $_, edustaa prosessissa olevaa objektia. |
$PSScriptRoot | Sisältää suoritettavan komentosarjan päähakemiston koko polun. |
$PSSenderInfo | Sisältää tietoja käyttäjästä, joka aloitti PSS-istunnon. |
$PSUICulttuuri | Heijastaa käyttöjärjestelmässä määritettyä käyttöliittymäkulttuuria. |
$ PWD | Edustaa PowerShell-istunnon nykyistä työhakemistoa. |
$Lähettäjä | Sisältää tapahtuman luoneen objektin. |
$ShellId | Sisältää nykyisen kuoren tunnisteen. |
$StackTrace | Tallentaa viimeisimmän virheen pinojäljityksen. |
$kytkin | Sisältää 'Switch'-lauseen luetteloijan. |
$tämä | Viittaa luokan esiintymään komentosarjalohkoissa, jotka laajentavat luokkia. |
$totta | Edustaa Boolen arvoa 'True'. |
Kaikki PowerShellin 'automaattiset muuttujat' löytyvät suorittamalla alla oleva komento:
Hanki-muuttuja
Johtopäätös
' Automaattiset muuttujat ” muodostavat PowerShell-komentosarjan selkärangan, jolloin kehittäjät voivat saada tietoa järjestelmästä, komentoriviargumenteista, komentosarjan suorituskontekstista ja paljon muuta. Hyödyntämällä automaattisia muuttujia, kuten '$PSVersionTable', '$Args', '$MyInvocation', '$Error' ja muita, PowerShell-skriptien kehittäjät voivat luoda virtaviivaisia järjestelmänhallintakäytäntöjä.