Was sind automatische Variablen in PowerShell?

Was Sind Automatische Variablen In Powershell



PowerShells „ Automatische Variablen „sind für Systemverwaltung, Automatisierung und Skripting-Aktivitäten unerlässlich. Diese Variablen sind in die PowerShell-Laufzeit integriert und dienen als Platzhalter zum Speichern und Referenzieren spezifischer Informationen während der Ausführung eines Skripts oder Befehls. Das Verständnis und die effektive Nutzung dieser automatischen Variablen können die Effizienz und Funktionalität von PowerShell-Skripten erheblich verbessern.

Ziel dieses Artikels ist es, das Konzept der „Automatischen Variablen“ in PowerShell, ihre Bedeutung und wie sie in verschiedenen Szenarien genutzt werden können, zu untersuchen.







Was sind automatische Variablen in PowerShell?

Lassen Sie uns zunächst die Definition von „ Automatische Variablen “. Diese Variablen sind vordefiniert und werden von PowerShell während der Skriptausführung automatisch erstellt. Diese dienen unterschiedlichen Zwecken, einschließlich der Bereitstellung von Informationen über das System, Befehlszeilenargumenten, skriptbezogenen Details und vielem mehr.



PowerShell bietet mehrere „automatische Variablen“ und jede von ihnen dient einem bestimmten Zweck bei der Skriptausführung. Diese Variablen lauten wie folgt:



1. $PSVersionTable

Eine der grundlegenden automatischen Variablen in PowerShell ist „ $PSVersionTable “. Mit dieser Variable können Skriptentwickler die verwendete PowerShell-Version ermitteln, was bei der Prüfung der Kompatibilität und Verfügbarkeit bestimmter Features und Funktionalitäten von entscheidender Bedeutung sein kann.





Die folgenden Eigenschaften sind dieser Variablen zugeordnet:

PSVersion: Gibt die PowerShell-Versionsnummer zurück.



PSEdition: Für PowerShell 4 und früher sowie PowerShell 5.1 in Windows-Versionen mit vollem Funktionsumfang hat diese Eigenschaft den Wert „Desktop“. Diese Eigenschaft hat den Wert von Core für PowerShell 6 und höher sowie von Windows PowerShell 5.1 für Low-Footprint-Editionen wie Windows Nano Server oder Windows IoT.

GitCommitId: Ruft die GitHub-Commit-ID der Quelldateien ab.

DU: Protokolliert Informationen über das Computersystem, das PowerShell verwendet.

Plattform: Gibt die unterstützende Plattform des Betriebssystems zurück. Unix hat Wert auf Linux und macOS. Schauen Sie sich $IsMacOs und $IsLinux an.

PSCompatibleVersions: Es werden PowerShell-Versionen zurückgegeben, die mit der aktuellen Version kompatibel sind.

PSRemotingProtocolVersion: Gibt die Versionsnummer für das PowerShell-Remoteverwaltungsprotokoll zurück.

Serialisierungsversion: Gibt die Version der Serialisierungsmethode zurück.

WSManStackVersion: Gibt die Versionsnummer des WS-Management-Stacks zurück.

$ PSVersionTable

2. $Args

Eine weitere wichtige automatische Variable in PowerShell ist „ $Args “, das ein Array von Befehlszeilenargumenten enthält, die an ein Skript oder eine Funktion übergeben werden. Diese Variable ermöglicht es Entwicklern, die bereitgestellten Argumente dynamisch in ihren Skripten zu verarbeiten und zu bearbeiten.

Beim Definieren einer Funktion können Sie entweder das Schlüsselwort „param“ verwenden, um die Parameter zu deklarieren, oder Sie können eine durch Kommas getrennte Liste von Parametern in Klammern nach dem Funktionsnamen hinzufügen. Die Variable „$Args“ einer Ereignisaktion speichert Objekte, die als Platzhalter für die Ereignisparameter des behandelten Ereignisses dienen:

für jede ( $arg In $Args ) {
Schreib-Host $arg
}

3. $MyInvocation

Der ' $MyInvocation Die Variable „liefert wichtige Hintergrunddaten über das Skript oder die Prozedur, die gerade ausgeführt wird. Es bietet Eigenschaften wie den Skriptnamen, die Skriptzeilennummer und ob das Skript interaktiv oder nicht interaktiv ausgeführt wird. Diese Eigenschaften helfen Skriptentwicklern, Verzweigungslogik zu implementieren, Mechanismen zur Fehlerbehandlung zu definieren oder aussagekräftige Protokolle und Berichte zu erstellen:

$ MyInvocation

4. $Fehler

Eine weniger bekannte automatische Variable „ $Fehler “, erfasst effektiv alle Fehlermeldungen oder Ausnahmen, die während der Skriptausführung auftreten. Auf „$Error“ kann zugegriffen werden, um spezifische Fehlerdetails wie Ausnahmemeldungen, Stack-Traces oder Fehlercodes abzurufen und so eine detaillierte Analyse und Fehlerbehebung zu ermöglichen.

Der jüngste Fehler wird durch das erste Fehlerobjekt im Array dargestellt „ $Fehler[0] „. Sie können die allgemeine Option ErrorAction mit dem Wert „Ignore“ verwenden, um zu verhindern, dass Fehler zum Array „$Error“ hinzugefügt werden.

Angenommen, wir haben einen genauen Befehl eingegeben:

IP [ onfig

Wenn wir nun das Cmdlet „$Error“ eingeben:

$ Fehler

5. $PSCmdlet

Beim Arbeiten mit PowerShell-Modulen wird die automatische Variable „ $PSCmdlet “ tritt in Kraft. Diese Variable bietet Zugriff auf die aktuelle Instanz des aufgerufenen Cmdlets oder der aufgerufenen Funktion und erleichtert so die direkte Interaktion mit deren Eigenschaften und Methoden.

Mit „$PSCmdlet“ können fortgeschrittene Skriptentwickler das Verhalten von Modulen optimieren und verbessern, indem sie die integrierten Funktionen erweitern oder ändern. Sie können die Attribute und Methoden des Objekts in Ihrem Cmdlet oder Funktionscode als Reaktion auf die Verwendungskriterien verwenden:

Funktion typeof-psCmdlet {
[ cmdletBinding ( ) ] param ( )
Echo „Art von“. $psCmdlet Ist $($psCmdlet.GetType() .Vollständiger Name)'
}

typeof-psCmdlet

Zusätzlich zu den oben genannten Variablen umfasst PowerShell automatische Variablen wie $HOME, $PROFILE, $PWD und viele mehr, die unterschiedlichen Zwecken dienen, z. B. dem Zugriff auf Eingaben, der Fehlerverfolgung, dem Abrufen von Umgebungsinformationen, der Verwaltung von Parametern und vielem mehr. Diese Variablen sind unten aufgeführt:

Automatische Variablen Beschreibung
$$ Enthält das letzte Token in der vorherigen Zeile, das von der PowerShell-Sitzung empfangen wurde.
$? Speichert den Ausführungsstatus des letzten Befehls.
$^ Enthält das erste Token der letzten von der Sitzung empfangenen Zeile.
$_ Stellt das aktuelle Objekt in der Pipeline dar.
$ConsoleFileName Enthält den Pfad der Konsolendatei (.psc1), die zuletzt in der Sitzung verwendet wurde.
$EnabledExperimentalFeatures Enthält eine Liste der aktivierten experimentellen Funktionen.
$Event Enthält ein „PSEventArgs“-Objekt, das das verarbeitete Ereignis darstellt.
$EventArgs Enthält das erste Ereignisargument des verarbeiteten Ereignisses.
$EventSubscriber Stellt den Ereignisabonnenten des verarbeiteten Ereignisses dar.
$ExecutionContext Stellt den Ausführungskontext des PowerShell-Hosts dar.
$false Stellt den booleschen Wert „False“ dar.
$foreach Enthält den Enumerator einer „for-Each“-Schleife.
$HOME Enthält den vollständigen Pfad des Home-Verzeichnisses des Benutzers.
$Host Stellt die aktuelle Hostanwendung für PowerShell dar.
$Eingabe Dient als Enumerator für alle Eingaben, die an eine Funktion oder ein Skript übergeben werden.
$IsCoreCLR Gibt an, ob die Sitzung auf der .NET Core Runtime (CoreCLR) ausgeführt wird.
$IsLinux Gibt an, ob die Sitzung auf einem Linux-Betriebssystem ausgeführt wird.
$IsMacOS Gibt an, ob die Sitzung auf einem MacOS-Betriebssystem ausgeführt wird.
$IsWindows Gibt an, ob die Sitzung auf einem Windows-Betriebssystem ausgeführt wird.
$LASTEXITCODE Speichert den Exit-Code des letzten nativen Programms oder PowerShell-Skripts.
$Matches Enthält übereinstimmende Zeichenfolgen aus den Operatoren „-match“ und „-notmatch“.
$NestedPromptLevel Verfolgt die aktuelle Eingabeaufforderungsebene in verschachtelten Befehlen oder Debugging-Szenarien.
$null Stellt einen Null- oder leeren Wert dar.
$PID Enthält die Prozesskennung (PID) der PowerShell-Sitzung.
$PROFIL Enthält den vollständigen Pfad des PowerShell-Profils für den aktuellen Benutzer und die aktuelle Hostanwendung.
$PSBoundParameters Enthält ein Wörterbuch mit Parametern, die an ein Skript oder eine Funktion übergeben werden, und deren Werte.
$PSCommandPath Enthält den vollständigen Pfad und Dateinamen des ausgeführten Skripts.
$PSCulture Spiegelt die Kultur des aktuellen PowerShell-Ausführungsbereichs wider.
$PSEdition Enthält die Informationen zur PowerShell-Edition.
$PSHOME Enthält den vollständigen Pfad des PowerShell-Installationsverzeichnisses.
$PSItem Entspricht $_ und stellt das aktuelle Objekt in der Pipeline dar.
$PSScriptRoot Enthält den vollständigen Pfad des übergeordneten Verzeichnisses des ausführenden Skripts.
$PSSenderInfo Enthält Informationen über den Benutzer, der die PSSession gestartet hat.
$PSUICulture Spiegelt die im Betriebssystem konfigurierte Benutzeroberflächenkultur wider.
$PWD Stellt das aktuelle Arbeitsverzeichnis der PowerShell-Sitzung dar.
$Sender Enthält das Objekt, das ein Ereignis generiert hat.
$ShellId Enthält den Bezeichner der aktuellen Shell.
$StackTrace Speichert den Stack-Trace für den letzten Fehler.
$wechsel Enthält den Enumerator der „Switch“-Anweisung.
$dies Bezieht sich auf die Instanz einer Klasse in Skriptblöcken, die Klassen erweitern.
$wahr Stellt den booleschen Wert „True“ dar.

Alle „automatischen Variablen“ in PowerShell können durch Ausführen des folgenden Befehls gefunden werden:

Get-Variable

Abschluss

Automatische Variablen ” bilden das Rückgrat der PowerShell-Skripterstellung und ermöglichen es Entwicklern, Informationen über das System, Befehlszeilenargumente, den Skriptausführungskontext und mehr zu erhalten. Durch die Nutzung automatischer Variablen wie „$PSVersionTable“, „$Args“, „$MyInvocation“, „$Error“ und andere können PowerShell-Skriptentwickler optimierte Systemverwaltungspraktiken erstellen.