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.