PowerShell's ' Automatische variabelen ” zijn essentieel voor systeembeheer, automatisering en scriptingactiviteiten. Deze variabelen zijn ingebouwd door de PowerShell-runtime en dienen als tijdelijke aanduidingen om specifieke informatie op te slaan en ernaar te verwijzen tijdens de uitvoering van een script of opdracht. Het effectief begrijpen en gebruiken van deze automatische variabelen kan de efficiëntie en functionaliteit van PowerShell-scripts aanzienlijk verbeteren.
Dit artikel is bedoeld om het concept van 'Automatische variabelen' in PowerShell, hun betekenis en hoe ze in verschillende scenario's kunnen worden gebruikt, te verkennen.
Wat zijn automatische variabelen in PowerShell?
Laten we om te beginnen eens kijken naar de definitie van ' Automatische variabelen ”. Deze variabelen zijn vooraf gedefinieerd en worden automatisch gemaakt door PowerShell tijdens de uitvoering van het script. Deze hebben verschillende doelen, waaronder het verstrekken van informatie over het systeem, opdrachtregelargumenten, scriptgerelateerde details en nog veel meer.
PowerShell biedt verschillende 'automatische variabelen' en elk heeft een eigen doel bij het uitvoeren van scripts. Deze variabelen zijn als volgt:
1. $PSVersionTable
Een van de fundamentele automatische variabelen in PowerShell is ' $PSVersionTable ”. Met deze variabele kunnen scriptontwikkelaars nagaan welke versie van PowerShell wordt gebruikt, wat cruciaal kan zijn bij het overwegen van de compatibiliteit en beschikbaarheid van bepaalde functies en functionaliteiten.
De volgende eigenschappen zijn gekoppeld aan deze variabele:
PSVersie: Retourneert het PowerShell-versienummer.
PSE Editie: Voor PowerShell 4 en eerder, evenals PowerShell 5.1 op Windows-versies met volledige functionaliteit, heeft deze eigenschap de waarde 'Desktop'. Dit kenmerk heeft de waarde van Core voor PowerShell 6 en later, evenals Windows PowerShell 5.1 voor low-footprint-edities zoals Windows Nano Server of Windows IoT.
GitCommitId: Haalt de GitHub commit-ID van de bronbestanden op.
JIJ: Registreert informatie over het computersysteem dat PowerShell gebruikt.
Platform: Retourneert het ondersteunende platform van het besturingssysteem. Unix heeft waarde op Linux en macOS. Bekijk $IsMacOs en $IsLinux.
PSCompatibele versies: PowerShell-versies die compatibel zijn met de huidige versie worden geretourneerd.
PSRemotingProtocolVersie: Retourneert het versienummer voor het PowerShell-protocol voor extern beheer.
Serialisatieversie: Retourneert de versie van de serialisatiemethode.
WSManStackVersie: Retourneert het versienummer van de WS-Management-stack.
$ PSVersionTable
2. $argumenten
Een andere essentiële automatische variabele in PowerShell is ' $argumenten ”, die een reeks opdrachtregelargumenten bevat die aan een script of functie zijn doorgegeven. Deze variabele stelt ontwikkelaars in staat om de verstrekte argumenten dynamisch binnen hun scripts te verwerken en te manipuleren.
Bij het definiëren van een functie kunt u het sleutelwoord 'param' gebruiken om de parameters te declareren of u kunt een door komma's gescheiden lijst met parameters tussen haakjes achter de functienaam toevoegen. De variabele '$Args' van een gebeurtenisactie slaat objecten op die dienen als tijdelijke aanduidingen voor de gebeurtenisparameters van de gebeurtenis die wordt afgehandeld:
voor elk ( $arg in $argumenten ) {Schrijf-Host $arg
}
3. $MijnInvocatie
De ' $MijnAanroeping ” variabele geeft cruciale achtergrondgegevens over het script of de procedure die momenteel wordt uitgevoerd. Het biedt eigenschappen zoals de scriptnaam, het scriptregelnummer en of het script interactief of niet-interactief wordt uitgevoerd. Deze eigenschappen helpen scriptontwikkelaars bij het implementeren van vertakkingslogica, het definiëren van foutafhandelingsmechanismen of het genereren van zinvolle logboekregistratie en rapportage:
$ MijnAanroeping
4. $Fout
Een minder bekende automatische variabele “ $Fout ”, vangt effectief alle foutmeldingen of uitzonderingen op die optreden tijdens de uitvoering van het script. '$Error' is toegankelijk om specifieke foutdetails op te halen, zoals uitzonderingsberichten, stacktraceringen of foutcodes, waardoor gedetailleerde analyse en debugging mogelijk is.
De meest recente fout wordt weergegeven door het eerste foutobject in de array ' $Fout[0] “. U kunt de algemene optie ErrorAction gebruiken met de waarde 'Negeren' om te voorkomen dat de fouten worden toegevoegd aan de array '$Error'.
Stel dat we een nauwkeurig commando hebben getypt:
ik p [ onfig
Als we nu de cmdlet '$Error' invoeren:
$ Fout
5. $PSCmdlet
Bij het werken met PowerShell-modules wordt de automatische variabele ' $PSCmdlet ” treedt in werking. Deze variabele biedt toegang tot de huidige instantie van de cmdlet of functie die wordt aangeroepen, waardoor directe interactie met de eigenschappen en methoden wordt vergemakkelijkt.
Met behulp van '$PSCmdlet' kunnen geavanceerde scriptontwikkelaars het gedrag van modules verfijnen en verbeteren door de ingebouwde functionaliteiten uit te breiden of te wijzigen. U kunt de kenmerken en methoden van het object gebruiken in uw cmdlet of functiecode als reactie op de gebruikscriteria:
functie typeof-psCmdlet {[ cmdletBinding ( ) ] param ( )
echo 'type van ` $psCmdlet is $($psCmdlet.GetType() .Voor-en achternaam)'
}
typeof-psCmdlet
Naast de bovengenoemde variabelen omvat PowerShell automatische variabelen zoals $HOME, $PROFILE, $PWD en nog veel meer, die verschillende doelen dienen, zoals toegang tot invoer, trackingfouten, het ophalen van omgevingsinformatie, het beheren van parameters en nog veel meer. Deze variabelen staan hieronder vermeld:
Automatische variabelen | Beschrijving |
$$ | Bevat het laatste token in de vorige regel dat is ontvangen door de PowerShell-sessie. |
$? | Slaat de uitvoeringsstatus van de laatste opdracht op. |
$^ | Bevat het eerste token van de laatste regel dat door de sessie is ontvangen. |
$_ | Vertegenwoordigt het huidige object in de pijplijn. |
$ConsoleFileName | Bevat het pad van het consolebestand (.psc1) dat het laatst in de sessie is gebruikt. |
$EnabledExperimentele functies | Bevat een lijst met ingeschakelde experimentele functies. |
$ Evenement | Bevat een 'PSEventArgs'-object dat de gebeurtenis vertegenwoordigt die wordt verwerkt. |
$EventArgs | Bevat het eerste gebeurtenisargument van de gebeurtenis die wordt verwerkt. |
$EventAbonnee | Vertegenwoordigt de gebeurtenisabonnee van de gebeurtenis die wordt verwerkt. |
$ExecutionContext | Vertegenwoordigt de uitvoeringscontext van de PowerShell-host. |
$vals | Vertegenwoordigt de Booleaanse waarde 'False'. |
$ voor elk | Bevat de teller van een 'for-Each'-lus. |
$ THUIS | Bevat het volledige pad van de thuismap van de gebruiker. |
$Host | Vertegenwoordigt de huidige hosttoepassing voor PowerShell. |
$invoer | Dient als een teller voor alle invoer die wordt doorgegeven aan een functie of script. |
$IsCoreCLR | Geeft aan of de sessie wordt uitgevoerd op de .NET Core Runtime (CoreCLR). |
$IsLinux | Geeft aan of de sessie wordt uitgevoerd op een Linux-besturingssysteem. |
$IsMacOS | Geeft aan of de sessie wordt uitgevoerd op een MacOS-besturingssysteem. |
$IsWindows | Geeft aan of de sessie wordt uitgevoerd op een Windows-besturingssysteem. |
$LASTEXITCODE | Slaat de afsluitcode op van het laatste native programma of PowerShell-script. |
$ Komt overeen | Bevat overeenkomende tekenreeksen van de operatoren '-match' en '-notmatch'. |
$NestedPromptLevel | Houdt het huidige aanwijzingsniveau bij in geneste opdrachten of foutopsporingsscenario's. |
$nul | Vertegenwoordigt een null of lege waarde. |
$PID | Bevat de proces-ID (PID) van de PowerShell-sessie. |
$PROFIEL | Bevat het volledige pad van het PowerShell-profiel voor de huidige gebruiker en hosttoepassing. |
$PSBoundParameters | Bevat een woordenboek met parameters die zijn doorgegeven aan een script of functie en hun waarden. |
$PSCommandPath | Bevat het volledige pad en de bestandsnaam van het script dat wordt uitgevoerd. |
$PSCultuur | Weerspiegelt de cultuur van de huidige PowerShell-runspace. |
$PSeditie | Bevat informatie over de PowerShell-editie. |
$PSHOME | Bevat het volledige pad van de PowerShell-installatiemap. |
$PSItem | Hetzelfde als $_, vertegenwoordigt het huidige object in de pijplijn. |
$PSScriptRoot | Bevat het volledige pad van de bovenliggende map van het uitvoerende script. |
$PSSenderInfo | Bevat informatie over de gebruiker die de PSSession heeft gestart. |
$PSUIcultuur | Weerspiegelt de cultuur van de gebruikersinterface (UI) die in het besturingssysteem is geconfigureerd. |
$PWD | Vertegenwoordigt de huidige werkmap van de PowerShell-sessie. |
$Afzender | Bevat het object dat een gebeurtenis heeft gegenereerd. |
$ShellId | Bevat de identifier van de huidige shell. |
$Stack Trace | Slaat de stacktracering op voor de meest recente fout. |
$ overschakelen | Bevat de teller van de 'Switch'-instructie. |
$ dit | Verwijst naar de instantie van een klasse in scriptblokken die klassen uitbreiden. |
$ waar | Vertegenwoordigt de Booleaanse waarde 'True'. |
Alle 'automatische variabelen' in PowerShell kunnen worden gevonden door de onderstaande opdracht uit te voeren:
Get-variabele
Conclusie
“ Automatische variabelen ” vormen de ruggengraat van PowerShell-scripting, waardoor ontwikkelaars informatie over het systeem, opdrachtregelargumenten, scriptuitvoeringscontext en meer kunnen verkrijgen. Door gebruik te maken van automatische variabelen zoals '$PSVersionTable', '$Args', '$MyInvocation', '$Error' en andere, kunnen PowerShell-scriptontwikkelaars gestroomlijnde systeembeheerpraktijken creëren.