PowerShells ' Automatiske variabler ” er avgjørende for systemadministrasjon, automatisering og skripting. Disse variablene er innebygd av PowerShell-kjøringen og fungerer som plassholdere for å lagre og referere til spesifikk informasjon under kjøringen av et skript eller en kommando. Å forstå og bruke disse automatiske variablene effektivt kan forbedre effektiviteten og funksjonaliteten til PowerShell-skript betraktelig.
Denne artikkelen tar sikte på å utforske konseptet 'Automatiske variabler' i PowerShell, deres betydning og hvordan de kan utnyttes i ulike scenarier.
Hva er automatiske variabler i PowerShell?
For å begynne, la oss fordype oss i definisjonen av ' Automatiske variabler '. Disse variablene er forhåndsdefinert og opprettes automatisk av PowerShell under kjøring av skript. Disse tjener forskjellige formål, inkludert å gi informasjon om systemet, kommandolinjeargumenter, skriptrelaterte detaljer og mye mer.
PowerShell tilbyr flere 'automatiske variabler', og hver av dem tjener et særskilt formål i skriptutførelse. Disse variablene er som følger:
1. $PSVersionTable
En av de grunnleggende automatiske variablene i PowerShell er ' $PSVersionTable '. Denne variabelen lar skriptutviklere finne ut hvilken versjon av PowerShell som brukes, noe som kan være avgjørende når man vurderer kompatibiliteten og tilgjengeligheten til visse funksjoner og funksjoner.
Følgende egenskaper er knyttet til denne variabelen:
PS-versjon: Returnerer PowerShell-versjonsnummeret.
PSE-utgave: For PowerShell 4 og tidligere, samt PowerShell 5.1 på Windows-versjoner med alle funksjoner, har denne egenskapen verdien «Desktop». Denne egenskapen har verdien av Core for PowerShell 6 og nyere, samt Windows PowerShell 5.1 for utgaver med lite fotavtrykk som Windows Nano Server eller Windows IoT.
GitCommitId: Henter kildefilenes GitHub commit ID.
DU: Logger informasjon om datasystemet som PowerShell bruker.
Plattform: Returnerer operativsystemets støtteplattform. Unix har verdi på Linux og macOS. Sjekk ut $IsMacOs og $IsLinux.
PS-kompatible versjoner: PowerShell-versjoner som er kompatible med gjeldende versjon, returneres.
PSRemotingProtocolVersion: Returnerer versjonsnummeret for PowerShell ekstern administrasjonsprotokoll.
Serialiseringsversjon: Returnerer serialiseringsmetodens versjon.
WSManStackVersion: Returnerer WS-Management-stakkens versjonsnummer.
$ PSVersjonstabell
2. $Args
En annen viktig automatisk variabel i PowerShell er ' $Args ”, som inneholder en rekke kommandolinjeargumenter som sendes til et skript eller en funksjon. Denne variabelen gir utviklere mulighet til å behandle og manipulere de oppgitte argumentene dynamisk i skriptene deres.
Når du definerer en funksjon, kan du enten bruke nøkkelordet 'param' for å deklarere parameterne, eller du kan legge til en kommadelt liste over parametere i parentes etter funksjonsnavnet. En hendelseshandlings '$Args'-variabel lagrer objekter som fungerer som plassholdere for hendelsesparametrene til hendelsen som håndteres:
for hver ( $arg i $Args ) {Skrive-vert $arg
}
3. $MyInvocation
« $MyInvocation variabel gir viktige bakgrunnsdata om skriptet eller prosedyren som kjører for øyeblikket. Det tilbyr egenskaper som skriptnavn, skriptlinjenummer og om skriptet kjøres interaktivt eller ikke-interaktivt. Disse egenskapene hjelper skriptutviklere med å implementere forgreningslogikk, definere feilhåndteringsmekanismer eller generere meningsfull logging og rapportering:
$ MyInvocation
4. $Feil
En mindre kjent automatisk variabel ' $Error ”, fanger effektivt opp eventuelle feilmeldinger eller unntak som oppstår under kjøring av skript. '$Error' kan nås for å hente spesifikke feildetaljer som unntaksmeldinger, stackspor eller feilkoder, noe som muliggjør detaljert analyse og feilsøking.
Den siste feilen er representert av det første feilobjektet i matrisen ' $Error[0] '. Du kan bruke det vanlige alternativet ErrorAction med verdien 'Ignorer' for å forhindre at feilene blir lagt til '$Error'-matrisen.
Anta at vi skrev inn en nøyaktig kommando:
ip [ påfig
Nå, hvis vi skriver inn '$Error' cmdlet:
$ Feil
5. $PSCmdlet
Når du arbeider med PowerShell-moduler, vil den automatiske variabelen ' $PSCmdlet ' trer i kraft. Denne variabelen gir tilgang til gjeldende forekomst av cmdleten eller funksjonen som påkalles, og letter direkte interaksjon med dens egenskaper og metoder.
Ved å bruke «$PSCmdlet» kan avanserte skriptutviklere finjustere og forbedre modulenes oppførsel ved å utvide eller modifisere de innebygde funksjonene. Du kan bruke objektets attributter og metoder i cmdlet- eller funksjonskoden som svar på brukskriteriene:
funksjon type-psCmdlet {[ cmdletBinding ( ) ] param ( )
ekko 'type ` $psCmdlet er $($psCmdlet.GetType() .Fullt navn)'
}
type-psCmdlet
I tillegg til de nevnte variablene, omfatter PowerShell automatiske variabler som $HOME, $PROFILE, $PWD og mange flere, som tjener forskjellige formål, for eksempel tilgang til input, sporingsfeil, henting av miljøinformasjon, administrering av parametere og mye mer. Disse variablene er listet opp nedenfor:
Automatiske variabler | Beskrivelse |
$$ | Inneholder det siste tokenet i forrige linje mottatt av PowerShell-økten. |
$? | Lagrer utførelsesstatusen til den siste kommandoen. |
$^ | Inneholder det første tokenet fra den siste linjen mottatt av økten. |
$_ | Representerer gjeldende objekt i rørledningen. |
$ConsoleFileName | Inneholder banen til konsollfilen (.psc1) som sist ble brukt i økten. |
$EnabledExperimentalFeatures | Inneholder en liste over aktiverte eksperimentelle funksjoner. |
$Event | Inneholder et 'PSEventArgs'-objekt som representerer hendelsen som behandles. |
$EventArgs | Inneholder det første hendelsesargumentet for hendelsen som behandles. |
$EventSubscriber | Representerer hendelsesabonnenten til hendelsen som behandles. |
$ExecutionContext | Representerer utførelseskonteksten til PowerShell-verten. |
$false | Representerer den boolske verdien 'False'. |
$foreach | Inneholder telleren for en 'for-hver'-løkke. |
$HJEM | Inneholder hele banen til brukerens hjemmekatalog. |
$Vert | Representerer gjeldende vertsapplikasjon for PowerShell. |
$inngang | Fungerer som en teller for alle input som sendes til en funksjon eller et skript. |
$IsCoreCLR | Indikerer om økten kjører på .NET Core Runtime (CoreCLR). |
$IsLinux | Indikerer om økten kjører på et Linux-operativsystem. |
$IsMacOS | Indikerer om økten kjører på et MacOS-operativsystem. |
$IsWindows | Identifiserer om økten kjører på et Windows-operativsystem. |
$LASTEXITCODE | Lagrer utgangskoden til det siste opprinnelige programmet eller PowerShell-skriptet. |
$kamper | Inneholder samsvarende strenger fra operatorene '-match' og '-notmatch'. |
$NestedPromptLevel | Sporer gjeldende ledetekstnivå i nestede kommandoer eller feilsøkingsscenarier. |
$null | Representerer en null eller tom verdi. |
$PID | Inneholder prosessidentifikatoren (PID) for PowerShell-sesjonen. |
$PROFIL | Inneholder hele banen til PowerShell-profilen for gjeldende bruker og vertsapplikasjon. |
$PSBoundParameters | Inneholder en ordbok med parametere som sendes til et skript eller en funksjon og deres verdier. |
$PSCommandPath | Inneholder hele banen og filnavnet til skriptet som kjøres. |
$PSKultur | Gjenspeiler kulturen til det nåværende PowerShell-kjørerommet. |
$PSEdition | Inneholder informasjon om PowerShell-utgaven. |
$PSHOME | Inneholder hele banen til PowerShell-installasjonskatalogen. |
$PSItem | Samme som $_, representerer gjeldende objekt i rørledningen. |
$PSScriptRoot | Inneholder hele banen til det kjørende skriptets overordnede katalog. |
$PSSenderInfo | Inneholder informasjon om brukeren som startet PSSessionen. |
$PSUICulture | Gjenspeiler brukergrensesnittkulturen (UI) som er konfigurert i operativsystemet. |
$PWD | Representerer gjeldende arbeidskatalog for PowerShell-sesjonen. |
$Sender | Inneholder objektet som genererte en hendelse. |
$ShellId | Inneholder identifikatoren til gjeldende skall. |
$StackTrace | Lagrer stabelsporingen for den siste feilen. |
$bryter | Inneholder telleren for 'Switch'-setningen. |
$dette | Refererer til forekomsten av en klasse i skriptblokker som utvider klasser. |
$true | Representerer den boolske verdien 'True'. |
Alle de 'automatiske variablene' i PowerShell kan bli funnet ved å kjøre kommandoen nedenfor:
Get-Variable
Konklusjon
' Automatiske variabler ” danner ryggraden i PowerShell-skripting, og lar utviklere få informasjon om systemet, kommandolinjeargumenter, skriptutførelseskontekst og mer. Ved å utnytte automatiske variabler som '$PSVersionTable', '$Args', '$MyInvocation', '$Error' og andre, kan PowerShell-skriptutviklere lage strømlinjeformet systemadministrasjonspraksis.