Null-Variablen in PowerShell

Marion Paul Kenneth Mendoza 18 September 2023
  1. Einführung in die Null-Variable in PowerShell
  2. Auswirkungen der Null-Variablen in PowerShell
  3. Prüfen auf Nullwerte in PowerShell
Null-Variablen in PowerShell

PowerShell behandelt das Objekt $Null mit dem Wert null, und einige Befehle erfordern eine Ausgabe, um generiert zu werden. Sie generieren den Wert null, wenn ein Fehler auftritt, und können auch bei der Fehlerbehebung in den Skripts hilfreich sein, um zu überprüfen, ob der Befehl einen Wert generiert.

Dieser Artikel behandelt die Nullvariable, die Auswirkungen der Verwendung der Nullvariable in unterschiedlicher Syntax in PowerShell und Methoden zum Überprüfen der Nullwerte.

Einführung in die Null-Variable in PowerShell

Wir können uns NULL als einen unbekannten oder leeren Wert vorstellen. Beispielsweise ist eine Variable NULL, bis Sie einen Wert oder ein Objekt zuweisen.

Diese Variable kann wichtig sein, da einige Befehle einen Wert erfordern und Fehler generieren, wenn der Wert NULL ist.

Die Variable $null ist eine automatische Variable in PowerShell, die zur Darstellung von NULL verwendet wird. Wir können es Variablen zuweisen, es in Vergleichen verwenden und es als Platzhalter für NULL in einer Sammlung verwenden.

PowerShell behandelt $null als Objekt mit dem NULL-Wert. Daher unterscheidet sich diese Variable von dem, was Sie vielleicht erwarten, wenn Sie aus einer anderen Sprache kommen.

Auswirkungen der Null-Variablen in PowerShell

$null-Werte wirken sich unterschiedlich auf Ihren Code aus, je nachdem, wo sie erscheinen.

Auswirkungen auf Saiten

Wenn Sie $null in einem String verwenden, ist dies ein leerer Wert (oder ein leerer String).

$value = $null
Write-Output "The value is $value."

Ausgabe:

The value is .

Diese Variable ist einer der Gründe, warum wir Variablen in Klammern setzen müssen, wenn wir sie in Protokollnachrichten verwenden. Noch wichtiger ist es, die Kanten Ihrer Variablenwerte zu identifizieren, wenn sich der Wert am Ende der Zeichenfolge befindet.

$value = $null
Write-Output "The value is [$value]"

Ausgabe:

The value is []

Diese Variable macht leere Zeichenketten und $null-Werte leicht zu erkennen.

Auswirkungen auf numerische Gleichungen

Wenn eine $null-Variable in einer numerischen Gleichung verwendet wird, sind unsere Ergebnisse ungültig, wenn sie keinen Fehler liefern. Manchmal wird die Variable $null zu 0 ausgewertet, und manchmal wird das gesamte Ergebnis zu $null.

Hier ist ein Beispiel, das eine Multiplikation beinhaltet, die je nach Reihenfolge der Werte 0 oder $null ergibt.

$null * 5
$null -eq ( $null * 5 )

Ausgabe:

True

Auswirkungen auf Sammlungen

Eine Sammlung ermöglicht es uns, einen Index zu verwenden, um auf Werte zuzugreifen. Wenn wir versuchen, in eine Null-Sammlung zu indizieren, 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

Wir haben eine Sammlung, versuchen aber, auf ein Element zuzugreifen, das nicht in der Sammlung enthalten ist, und dann 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 für eine undefinierte Variable tun würden. Dabei spielt es keine Rolle, ob der Wert $null oder ein tatsächliches Objekt ist.

$null -eq $undefined.not.existing

Ausgabe:

True

Auswirkungen auf Methoden

Der Aufruf einer Methode für eine $null-Variable löst eine RuntimeException-Ausnahme aus.

$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

Immer wenn wir den Satz Sie können keine Methode für einen nullwertigen Ausdruck aufrufen sehen, können wir nach Stellen suchen, an denen eine Methode für eine Variable aufgerufen werden kann, ohne sie zuerst auf $null-Werte zu prüfen.

Prüfen auf Nullwerte in PowerShell

Wir platzieren die Variable $null immer links, wenn wir in den Beispielen nach $null-Werten suchen.

Dieser Schreibstil ist beabsichtigt und wird als Best Practice für PowerShell akzeptiert. Es gibt jedoch einige Szenarien, in denen die Platzierung auf der rechten Seite nicht das erwartete Ergebnis liefert.

Schauen wir uns das folgende Beispiel an und versuchen vorherzusagen, wie die Ergebnisse aussehen werden:

if ( $value -eq $null ){
    'The array is $null'
}

if ( $value -ne $null ){
    'The array is not $null'
}

Wenn wir $value nicht definieren, wertet der erste $true aus und unsere Nachricht lautet Das Array ist $null. Die Einschränkung hier ist, dass es möglich ist, einen $value zu erstellen, der es ermöglicht, dass beide Ergebnisse $false sind.

Ausgabe:

$value = @( $null )

In diesem Fall ist die Variable $value ein Array, das ein $null enthält.

Der Operator -eq überprüft jeden Wert im Array und gibt den passenden $null zurück (dies ergibt $false). Der Operator -ne gibt alles zurück, was nicht mit dem Wert $null übereinstimmt, und in diesem Fall gibt es keine Ergebnisse (dies wird auch als $false ausgewertet).

Also wird keiner $true sein, obwohl einer von ihnen sein sollte.

Marion Paul Kenneth Mendoza avatar Marion Paul Kenneth Mendoza avatar

Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.

LinkedIn

Verwandter Artikel - PowerShell Variable