Hvad er automatiske variabler i PowerShell

Hvad Er Automatiske Variabler I Powershell



PowerShells ' Automatiske variabler ” er afgørende for systemadministration, automatisering og scriptingaktiviteter. Disse variabler er indbygget af PowerShell-runtiden og tjener som pladsholdere til at gemme og referere til specifik information under udførelsen af ​​et script eller en kommando. At forstå og bruge disse automatiske variabler effektivt kan i høj grad forbedre effektiviteten og funktionaliteten af ​​PowerShell-scripts.

Denne artikel har til formål at udforske konceptet 'Automatiske variabler' i PowerShell, deres betydning, og hvordan de kan udnyttes i forskellige scenarier.







Hvad er automatiske variabler i PowerShell?

Til at begynde med, lad os dykke ned i definitionen af ​​' Automatiske variabler ”. Disse variabler er foruddefinerede og oprettes automatisk af PowerShell under scriptudførelse. Disse tjener forskellige formål, herunder at give oplysninger om systemet, kommandolinjeargumenter, script-relaterede detaljer og meget mere.



PowerShell tilbyder flere 'automatiske variabler', og hver af dem tjener et særskilt formål med scriptudførelse. Disse variabler er som følger:



1. $PSVersionTabel

En af de grundlæggende automatiske variabler i PowerShell er ' $PSVersionTable ”. Denne variabel gør det muligt for scriptudviklere at fastslå, hvilken version af PowerShell der bruges, hvilket kan være afgørende, når man overvejer kompatibiliteten og tilgængeligheden af ​​visse funktioner og funktionaliteter.





Følgende egenskaber er knyttet til denne variabel:

PSversion: Returnerer PowerShell-versionsnummeret.



PSE-udgave: For PowerShell 4 og tidligere samt PowerShell 5.1 på Windows-versioner med alle funktioner har denne egenskab værdien 'Desktop'. Denne egenskab har værdien af ​​Core til PowerShell 6 og nyere, samt Windows PowerShell 5.1 til udgaver med lavt fodspor som Windows Nano Server eller Windows IoT.

GitCommitId: Henter kildefilernes GitHub commit ID.

DU: Loger oplysninger om det computersystem, som PowerShell bruger.

Platform: Returnerer operativsystemets understøttende platform. Unix har værdi på Linux og macOS. Tjek $IsMacOs og $IsLinux ud.

PS-kompatible versioner: PowerShell-versioner, der er kompatible med den aktuelle version, returneres.

PSRemotingProtocolVersion: Returnerer versionsnummeret for PowerShell-fjernstyringsprotokollen.

Serialiseringsversion: Returnerer serialiseringsmetodens version.

WSManStackVersion: Returnerer WS-Management-stakkens versionsnummer.

$ PSVersionstabel

2. $Args

En anden vigtig automatisk variabel i PowerShell er ' $Args ”, som indeholder en række kommandolinjeargumenter, der sendes til et script eller en funktion. Denne variabel giver udviklere mulighed for at behandle og manipulere de angivne argumenter dynamisk i deres scripts.

Når du definerer en funktion, kan du enten bruge nøgleordet 'param' til at erklære parametrene, eller du kan tilføje en kommasepareret liste over parametre i parentes efter funktionsnavnet. En hændelseshandlings '$Args'-variabel gemmer objekter, der fungerer som pladsholdere for hændelsesparametrene for den hændelse, der håndteres:

for hver ( $arg i $Args ) {
Skriv-vært $arg
}

3. $MyInvocation

Det ' $MyInvocation variabel giver afgørende baggrundsdata om det script eller den procedure, der kører i øjeblikket. Det tilbyder egenskaber såsom scriptnavn, scriptlinjenummer og om scriptet køres interaktivt eller ikke-interaktivt. Disse egenskaber hjælper scriptudviklere med at implementere forgreningslogik, definere fejlhåndteringsmekanismer eller generere meningsfuld logning og rapportering:

$ MyInvocation

4. $Fejl

En mindre kendt automatisk variabel ' $Fejl ”, fanger effektivt alle fejlmeddelelser eller undtagelser, der opstår under scriptudførelse. '$Error' kan tilgås for at hente specifikke fejldetaljer såsom undtagelsesmeddelelser, stakspor eller fejlkoder, hvilket muliggør detaljeret analyse og debugging.

Den seneste fejl er repræsenteret af det første fejlobjekt i arrayet ' $Error[0] “. Du kan bruge den almindelige ErrorAction-indstilling med værdien 'Ignorer' for at forhindre, at fejlene tilføjes til '$Error'-arrayet.

Antag, at vi har skrevet en nøjagtig kommando:

ip [ på fig

Nu, hvis vi indtaster '$Error' cmdlet:

$ Fejl

5. $PSCmdlet

Når du arbejder med PowerShell-moduler, vil den automatiske variabel ' $PSCmdlet ” træder i kraft. Denne variabel giver adgang til den aktuelle forekomst af den cmdlet eller funktion, der aktiveres, hvilket letter direkte interaktion med dens egenskaber og metoder.

Ved at bruge '$PSCmdlet' kan avancerede scriptudviklere finjustere og forbedre modulers adfærd ved at udvide eller ændre de indbyggede funktionaliteter. Du kan bruge objektets attributter og metoder i din cmdlet eller funktionskode som svar på brugskriterierne:

fungere typeof-psCmdlet {
[ cmdletBinding ( ) ] param ( )
ekko 'type af ` $psCmdlet er $($psCmdlet.GetType() .Fulde navn)'
}

typeof-psCmdlet

Ud over de førnævnte variabler omfatter PowerShell automatiske variabler som $HOME, $PROFILE, $PWD og mange flere, som tjener forskellige formål, såsom adgang til input, sporingsfejl, hentning af miljøoplysninger, styring af parametre og meget mere. Disse variabler er anført nedenfor:

Automatiske variabler Beskrivelse
$$ Indeholder det sidste token i den forrige linje, der blev modtaget af PowerShell-sessionen.
$? Gemmer udførelsesstatus for den sidste kommando.
$^ Indeholder det første token af ​​den sidste linje, som sessionen modtager.
$_ Repræsenterer det aktuelle objekt i pipelinen.
$ConsoleFileName Indeholder stien til den konsolfil (.psc1), der senest blev brugt i sessionen.
$EnabledExperimentalFeatures Indeholder en liste over de aktiverede eksperimentelle funktioner.
$Begivenhed Indeholder et 'PSEventArgs'-objekt, der repræsenterer den hændelse, der behandles.
$EventArgs Indeholder det første hændelsesargument for den hændelse, der behandles.
$EventSubscriber Repræsenterer begivenhedsabonnenten for den begivenhed, der behandles.
$ExecutionContext Repræsenterer udførelseskonteksten for PowerShell-værten.
$falsk Repræsenterer den boolske værdi 'False'.
$foreach Indeholder tælleren for en 'for-Each'-løkke.
$HJEM Indeholder den fulde sti til brugerens hjemmemappe.
$Vært Repræsenterer den aktuelle værtsapplikation til PowerShell.
$input Fungerer som en tæller for alle input, der sendes til en funktion eller et script.
$IsCoreCLR Angiver om sessionen kører på .NET Core Runtime (CoreCLR).
$IsLinux Angiver om sessionen kører på et Linux-operativsystem.
$IsMacOS Angiver om sessionen kører på et MacOS-operativsystem.
$IsWindows Identificerer, om sessionen kører på et Windows-operativsystem.
$LASTEXITKODE Gemmer exitkoden for det sidste oprindelige program eller PowerShell-script.
$kampe Indeholder matchede strenge fra operatorerne '-match' og '-notmatch'.
$NestedPromptLevel Sporer det aktuelle promptniveau i indlejrede kommandoer eller fejlfindingsscenarier.
$nul Repræsenterer en null eller tom værdi.
$PID Indeholder procesidentifikatoren (PID) for PowerShell-sessionen.
$PROFIL Indeholder den fulde sti til PowerShell-profilen for den aktuelle bruger og værtsapplikation.
$PSBoundParameters Indeholder en ordbog over parametre, der sendes til et script eller en funktion, og deres værdier.
$PSCommandPath Indeholder den fulde sti og filnavn på det script, der udføres.
$PSKultur Afspejler kulturen i det nuværende PowerShell-løbsrum.
$PSEdition Indeholder oplysninger om PowerShell-udgaven.
$PSHOME Indeholder den fulde sti til PowerShell installationsmappen.
$PSItem Samme som $_ repræsenterer det aktuelle objekt i pipelinen.
$PSScriptRoot Indeholder den fulde sti til det udførende scripts overordnede bibliotek.
$PSSenderInfo Indeholder information om den bruger, der startede PSSessionen.
$PSUICulture Afspejler brugergrænsefladekulturen (UI) konfigureret i operativsystemet.
$PWD Repræsenterer den aktuelle arbejdsmappe for PowerShell-sessionen.
$Sender Indeholder det objekt, der genererede en begivenhed.
$ShellId Indeholder identifikatoren for den aktuelle shell.
$StackTrace Gemmer staksporet for den seneste fejl.
$switch Indeholder tælleren for 'Switch'-sætningen.
$dette Henviser til forekomsten af ​​en klasse i scriptblokke, der udvider klasser.
$sandt Repræsenterer den boolske værdi 'True'.

Alle de 'automatiske variable' i PowerShell kan findes ved at køre nedenstående kommando:

Get-Variable

Konklusion

Automatiske variabler ” danner rygraden i PowerShell-scripting, hvilket giver udviklere mulighed for at få information om systemet, kommandolinjeargumenter, scriptudførelseskontekst og mere. Ved at udnytte automatiske variabler såsom '$PSVersionTable', '$Args', '$MyInvocation', '$Error' og andre, kan PowerShell-scriptudviklere skabe strømlinede systemadministrationsmetoder.