Null-Variablen in PowerShell
- Einführung in die Null-Variable in PowerShell
- Auswirkungen der Null-Variable in PowerShell
- Überprüfung auf Null-Werte in PowerShell
- Fazit

PowerShell behandelt das $Null
-Objekt mit dem Wert null, und einige Befehle benötigen eine Ausgabe, um zu generieren. Sie geben den Wert null zurück, wenn ein Fehler auftritt, und können auch bei der Fehlersuche in den Skripten hilfreich sein, um zu überprüfen, ob der Befehl einen Wert generiert.
Dieser Artikel handelt von der Null-Variable, den Auswirkungen der Verwendung der Null-Variable in verschiedenen Syntaxen in PowerShell und Möglichkeiten zur Überprüfung der Null-Werte.
Einführung in die Null-Variable in PowerShell
Wir können NULL als einen unbekannten oder leeren Wert betrachten. Zum Beispiel ist eine Variable NULL, bis Sie einen Wert oder ein Objekt zuweisen.
Diese Variable kann wichtig sein, da einige Befehle einen Wert benötigen und fehlschlagen, wenn der Wert NULL ist.
Die $null
-Variable ist eine automatische Variable in PowerShell, die verwendet wird, um NULL darzustellen. Wir können sie Variablen zuweisen, in Vergleichen verwenden und als Platzhalter für NULL in einer Sammlung nutzen.
PowerShell behandelt $null
als ein Objekt mit dem NULL-Wert. Daher ist diese Variable anders, als Sie es möglicherweise von einer anderen Sprache erwarten.
Auswirkungen der Null-Variable in PowerShell
Das Verhalten von $null
-Werten kann je nach Ort, an dem sie in Ihrem Code erscheinen, variieren. Lassen Sie uns erkunden, wie Null-Variablen verschiedene Aspekte des PowerShell-Skripts beeinflussen.
Auswirkungen auf Strings
Wenn Sie $null
in einem String verwenden, wird es ein leerer String (oder ein leerer Wert) sein.
$value = $null
Write-Output "The value is $value."
Ausgabe:
The value is .
Um die Klarheit in Ihren Skripten aufrechtzuerhalten, ist es ratsam, Variablen in Klammern ([]
) einzuschließen, wenn Sie sie in Protokollnachrichten verwenden, insbesondere wenn der Wert der Variablen am Ende des Strings steht.
$value = $null
Write-Output "The value is [$value]"
Ausgabe:
The value is []
Diese Praxis hilft, zwischen leeren Strings und $null
-Werten zu unterscheiden.
Auswirkungen auf numerische Gleichungen
Wenn eine $null
-Variable in einer numerischen Gleichung verwendet wird, werden unsere Ergebnisse ungültig, wenn sie keinen Fehler verursachen. Manchmal wird die $null
-Variable zu 0
ausgewertet, oder sie macht das gesamte Ergebnis $null
.
Betrachten Sie dieses Beispiel mit Multiplikation, das entweder 0
oder $null
basierend auf der Reihenfolge der Werte ergibt.
$null * 5
$null -eq ( $null * 5 )
Ausgabe:
True
Auswirkungen auf Sammlungen
Eine Sammlung erlaubt es uns, einen Index zu verwenden, um auf Werte zuzugreifen. Wenn wir versuchen, auf eine Null-Sammlung zuzugreifen, erhalten wir diesen Fehler "Cannot index into a null array"
.
$value = $null
$value[10]
Ausgabe:
Cannot index into a null array.
At line:2 char:1
+ $value[10]
+ ~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [], RuntimeException
+ FullyQualifiedErrorId : NullArray
Wenn Sie jedoch eine Sammlung haben und versuchen, ein Element abzurufen, das nicht in der Sammlung vorhanden ist, erhalten Sie ein $null
-Ergebnis.
$array = @( 'one', 'two', 'three' )
$null -eq $array[100]
Ausgabe:
True
Auswirkungen auf Objekte
Wenn wir versuchen, auf eine Eigenschaft oder Untereigenschaft eines Objekts ohne angegebene Eigenschaft zuzugreifen, können wir eine $null
-Variable erhalten, wie Sie es bei einer undefinierten Variablen tun würden. Es spielt in diesem Fall keine Rolle, ob der Wert $null
oder ein tatsächliches Objekt ist.
$null -eq $undefined.not.existing
Ausgabe:
True
Auswirkungen auf Methoden
Das Aufrufen einer Methode auf einer $null
-Variable wirft eine RuntimeException
-Ausnahme.
$value = $null
$value.toString()
Ausgabe:
You cannot call a method on a null valued expression.
At line:2 char:1
+ $value.toString()
+ ~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [], RuntimeException
+ FullyQualifiedErrorId : InvokeMethodOnNull
Wann immer Sie die Phrase "You cannot call a method on a null valued expression"
hören, ist es ein Signal, Ihren Code auf Stellen zu überprüfen, an denen eine Methode ohne vorherige Überprüfung auf $null
-Werte auf eine Variable aufgerufen wird.
Überprüfung auf Null-Werte in PowerShell
Verwendung der Vergleichsoperatoren -eq
und -ne
, um auf Null-Werte in PowerShell zu überprüfen
Bei der Überprüfung auf $null
-Werte in PowerShell ist es eine Best Practice, die $null
-Variable auf die linke Seite der Vergleiche zu setzen. Diese Schreibweise ist nicht nur absichtlich, sondern wird auch als Best Practice in PowerShell akzeptiert.
Es gibt jedoch Szenarien, in denen das Setzen von $null
auf die rechte Seite unerwartete Ergebnisse liefern kann. Lassen Sie uns folgender Code ansehen und versuchen, die Ergebnisse vorherzusagen:
if ( $value -eq $null ) {
'The array is $null'
}
if ( $value -ne $null ) {
'The array is not $null'
}
Wenn wir $value
nicht definieren, wird die erste eine $true
-Auswertung ergeben, und unsere Nachricht wird Das Array ist $null
sein. Der Vorbehalt hier ist, dass es möglich ist, ein $value
zu erstellen, das beide Ergebnisse $false
zulässt.
Ausgabe:
The array is $null
In diesem Fall ist die $value
-Variable ein Array, das ein $null
enthält.
Der -eq
-Operator überprüft jeden Wert im Array und gibt das passende $null
zurück, was zu $false
ausgewertet wird. Ähnlich gibt der -ne
-Operator alles zurück, was nicht mit dem $null
-Wert übereinstimmt, was zu keinen Ergebnissen führt (was ebenfalls zu $false
ausgewertet wird).
Daher ist keine der Bedingungen $true
, auch wenn eine von ihnen erwartet werden könnte.
Verwenden Sie den -not
-Operator, um auf Null-Werte in PowerShell zu überprüfen
Der -not
-Operator ist ein logischer Operator in PowerShell, der eine Bedingung negiert. Wenn er auf eine Variable angewendet wird, überprüft er, ob die Variable nicht null ist.
$myVariable = $null
if (-not $myVariable) {
Write-Host "The variable is null."
}
In diesem Code-Snippet haben wir eine Variable $myVariable
, die mit einem Null-Wert initialisiert wurde. Der -not
-Operator wird in der if
-Anweisung verwendet, um zu überprüfen, ob $myVariable
nicht null ist.
Wenn die Bedingung wahr ist, wird das Skript den Codeblock innerhalb der if
-Anweisung ausführen.
Ausgabe:
The variable is null.
Wie in der Ausgabe gezeigt, identifiziert das Skript, dass $myVariable
null ist, und gibt die Nachricht "Die Variable ist null"
aus.
Verwenden Sie die Methode IsNullOrEmpty()
, um auf Null-Werte in PowerShell zu überprüfen
Die IsNullOrEmpty()
-Methode ist eine Methode der Klasse System.String
, nicht eine native PowerShell-Methode. Verschiedene Datentypen können unterschiedliche Möglichkeiten haben, um auf Null- oder leere Werte zu überprüfen.
In diesem Code erstellen wir eine Variable namens $myString
und weisen ihr den Wert $null
zu, was einen Null- oder leeren String darstellt.
Wir verwenden die Methode [string]::IsNullOrEmpty($myString)
, um zu überprüfen, ob $myString
null oder leer ist. Diese Methode ist Teil der [string]
-Klasse im .NET-Framework und wird verwendet, um zu bestimmen, ob ein String entweder null oder ein leerer String ist.
Wenn $myString
tatsächlich null oder leer ist, ist die Bedingung wahr, und das Skript gibt "Der String ist null oder leer."
aus.
$myString = $null
if ([string]::IsNullOrEmpty($myString)) {
Write-Host 'The string is null or empty.'
}
Ausgabe:
The string is null or empty.
Da $myString
den Wert $null
zugewiesen ist, ist die Bedingung wahr, und die Nachricht wird in der Ausgabe angezeigt.
Verwenden Sie die Methode IsNullOrWhiteSpace()
, um auf Null-Werte in PowerShell zu überprüfen
Die Methode IsNullOrWhiteSpace()
ist eine nützliche Methode, die in der System.String
-Klasse des .NET-Frameworks verfügbar ist, und Sie können sie in PowerShell verwenden, indem Sie sie auf eine String-Variable anwenden.
Diese Methode überprüft, ob ein String entweder null, leer oder nur aus Leerzeichen besteht. Sie ist nützlich, wenn Sie überprüfen möchten, ob eine String-Variable effektiv leer ist, selbst wenn sie nur Leerzeichen oder Tabs enthält.
In diesem unten stehenden Code erstellen wir eine Variable namens $myString
und weisen ihr einen String zu, der nur Leerzeichen enthält.
Dann verwenden wir die Methode [string]::IsNullOrWhiteSpace($myString)
, um zu überprüfen, ob $myString
null oder nur Leerraum enthält.
$myString = $null
if ([string]::IsNullOrWhiteSpace($myString)) {
Write-Host 'The string is null or contains only whitespace.'
}
Ausgabe:
The string is null or contains only whitespace.
Da die Bedingung wahr ist ($myString
ist null), gibt das Skript "Der String ist null oder enthält nur Leerzeichen."
aus.
Diese Methode ist hilfreich, wenn Sie sicherstellen möchten, dass ein String wirklich leer ist, selbst wenn er aufgrund von Leerzeichen oder Tabs als "leer"
erscheint.
Fazit
Im PowerShell-Scripting ist es wichtig zu verstehen, wie $null
-Variablen funktionieren, da sie beeinflussen können, wie Ihre Skripte in verschiedenen Situationen reagieren. Um zuverlässige Skripte zu schreiben, ist es eine gute Idee, Best Practices zu befolgen, wie zum Beispiel sicherzustellen, dass Sie Null-Werte korrekt überprüfen, indem Sie $null
auf die linke Seite setzen.
Egal, ob Sie neu im Scripting sind oder Erfahrung haben, wird Ihnen das Wissen um diese Details helfen, besser mit PowerShell umzugehen.
Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.
LinkedIn