Grundlegendes zu allgemeinen automatischen PowerShell-Variablen

Einige Variablennamen in der Windows PowerShell-Sprache sind nicht zulässig, und ihre Verwendung kann zu sehr unerwarteten und unerwünschten Ergebnissen führen. Jeder stößt irgendwann auf dieses Problem, und jeder Skript-Neuling möchte sich die Haare ausreißen und sich fragen, was mit seinem Skript nicht stimmt. Schuld daran sind fast immer die automatischen Variablen von PowerShell.

Die PowerShell-Sprache selbst benötigt einige Variablen, um ordnungsgemäß zu funktionieren. PowerShell verwendet diese Variablen zum Speichern verschiedener Informationen und ermöglicht es Ihnen, die Variablen zu lesen und nicht in sie zu schreiben. PowerShell speichert verschiedene Arten von Informationen in diesen Variablen.

Eine der beliebtesten automatischen Variablen ist die Pipeline-Variable $_, das auch genannt wird $PSItem. Diese Variable wird verwendet, um Objekte darzustellen, die über die PowerShell-Pipeline fließen.

Wenn Sie PowerShell zum Lesen einer CSV-Datei oder das Cmdlet Get-AdUser zum Suchen von Active Directory-Benutzern verwendet haben, aber nicht alle Elemente in der CSV oder alle Active Directory-Benutzer abrufen möchten, haben Sie wahrscheinlich verwendet eine weitere beliebte automatische Variable: wo Alias ​​(auch Where-Object genannt). Zum Beispiel, wenn Sie eine CSV-Datei mit den Headern von abfragen Vorname und Nachname die Hunderte von Namen enthalten, eine Möglichkeit, nur die Namen zu erhalten, die einen Nachnamen von Jones haben, ist die Verwendung Wo-Objekt (siehe Abbildung 1).

In diesem Beispiel habe ich die Pipeline-Variable verwendet, um jeden Namen darzustellen, der von der stammt Import-Csv Cmdlet. Ich beziehe mich auf die Nachname Eigenschaft der Pipeline-Variablen und Anweisung an Where-Object, mir nur Namen anzuzeigen, die den Nachnamen Jones haben. Ich konnte das nicht benutzen $_ Variiere mich selbst, indem ich ihm einen Wert zuweise, da PowerShell ihn bereits verwendet.

In dem in Abbildung 2 gezeigten PowerShell-Skript würden Sie erwarten $_ gleich sein etwas anderes aber es ist nicht. Dies liegt daran, dass Administratoren in PowerShell in jede automatische Variable schreiben können. Sie werden feststellen, dass kein Fehler aufgetreten ist. Dadurch werden häufig neue PowerShell-Benutzer ausgelöst.

Schließlich sind zwei weitere automatische Variablen $ true und $ false. PowerShell reserviert diese Variablen, um einen Booleschen Wert zu kennzeichnen Wahr und ein Boolescher Wert Falsch Wert. Diese Werte werden für alle Arten von PowerShell-Skripten konsistent verwendet, um nach verschiedenen Bedingungen zu suchen. Zum Beispiel könnten Sie die verwenden $ false Variable, um zu überprüfen, ob etwas gleich etwas anderem ist, wie in Abbildung 3 gezeigt, wo ich überprüfe, ob die Ganzzahl 1 gleich der Ganzzahl 2 ist (Abbildung 3).

In diesem Fall ist 1 nicht gleich 2. Und ich bestätige dies, indem ich das Ergebnis von 1-Gleichung 2 mit der automatischen Variablen vergleiche $ false. Wie erwartet ist das Ergebnis dieser Bedingung unsere andere automatische Variable $ true.

Wenn Sie versuchen, der Variablen eine Variable zuzuweisen $ false (Abbildung 4) erhalten Sie einen hilfreichen Fehler, der angibt, dass die Variable schreibgeschützt oder eine Konstante ist. In beiden Fällen bedeutet dies, dass die Variable an einer anderen Stelle definiert wurde und nichts ihren Wert ändern darf.

Diese Beispiele sind ziemlich einfach, daher ist es schwierig, einen Fehler zu machen. Sobald Sie jedoch mit dem Erstellen größerer Skripte beginnen, kann es schwieriger werden, das Problem der Verwendung einer automatischen Variablen aufzuspüren. Denken Sie daran: Sie müssen keinen tatsächlichen Fehler erhalten, um ein Problem zu haben. Wenn Sie das nächste Mal auf ein Problem mit einem Skript stoßen, bei dem alles korrekt aussieht, überprüfen Sie die automatischen Variablen, um sicherzustellen, dass die von Ihnen verwendeten Variablen nicht mit den PowerShell-Variablen in Konflikt stehen.

Similar Posts

Leave a Reply