Variables nulles dans PowerShell

Marion Paul Kenneth Mendoza 18 septembre 2023
  1. Introduction à la variable nulle dans PowerShell
  2. Impacts de la variable Null dans PowerShell
  3. Vérification des valeurs nulles dans PowerShell
Variables nulles dans PowerShell

PowerShell traite l’objet $Null avec la valeur null, et certaines commandes nécessitent une sortie pour être générées. Ils génèrent une valeur nulle en cas d’erreur et peuvent également être utiles dans le but de dépannage dans les scripts pour vérifier si la commande génère une valeur.

Cet article parle de la variable null, des impacts de l’utilisation de la variable null dans différentes syntaxes dans PowerShell et des moyens de vérifier les valeurs null.

Introduction à la variable nulle dans PowerShell

Nous pouvons considérer NULL comme une valeur inconnue ou vide. Par exemple, une variable est NULL jusqu’à ce que vous affectiez une valeur ou un objet.

Cette variable peut être importante car certaines commandes nécessitent une valeur et génèrent des erreurs si la valeur est NULL.

La variable $null est une variable automatique dans PowerShell utilisée pour représenter NULL. Nous pouvons l’affecter à des variables, l’utiliser dans des comparaisons et l’utiliser comme espace réservé pour NULL dans une collection.

PowerShell traite $null comme un objet avec la valeur NULL. Par conséquent, cette variable est différente de ce à quoi vous pouvez vous attendre si vous venez d’une autre langue.

Impacts de la variable Null dans PowerShell

Les valeurs $null auront un impact différent sur votre code selon l’endroit où elles apparaissent.

Impact sur les cordes

Si vous utilisez $null dans une chaîne, ce sera une valeur vide (ou une chaîne vide).

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

Production:

The value is .

Cette variable est l’une des raisons pour lesquelles nous devons placer des crochets autour des variables lorsque nous les utilisons dans les messages de journal. Il est encore plus important d’identifier les bords des valeurs de vos variables lorsque la valeur se trouve à la fin de la chaîne.

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

Production:

The value is []

Cette variable rend les chaînes vides et les valeurs $null faciles à repérer.

Impact sur les équations numériques

Lorsqu’une variable $null est utilisée dans une équation numérique, nos résultats seront invalides s’ils ne donnent pas d’erreur. Parfois, la variable $null sera évaluée à 0, et d’autres fois, le résultat sera $null.

Voici un exemple de multiplication qui donne 0 ou $null selon l’ordre des valeurs.

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

Production:

True

Impact sur les recouvrements

Une collection nous permet d’utiliser un index pour accéder aux valeurs. Si nous essayons d’indexer dans une collection nulle, nous obtiendrons cette erreur : Impossible d'indexer dans un tableau nul.

$value = $null
$value[10]

Production:

Cannot index into a null array.
At line:2 char:1
+ $value[10]
+ ~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (:) [], RuntimeException
    + FullyQualifiedErrorId : NullArray

Nous avons une collection mais essayons d’accéder à un élément qui n’est pas dans la collection, et vous obtiendrez alors un résultat $null.

$array = @( 'one', 'two', 'three' )
$null -eq $array[100]

Production:

True

Impacts sur les objets

Si nous essayons d’accéder à une propriété ou sous-propriété d’un objet sans propriété spécifiée, nous pouvons obtenir une variable $null comme vous le feriez pour une variable indéfinie. Peu importe si la valeur est $null ou un objet réel dans ce cas.

$null -eq $undefined.not.existing

Production:

True

Impacts sur les méthodes

L’appel d’une méthode sur une variable $null lèvera une exception RuntimeException.

$value = $null
$value.toString()

Production:

You cannot call a method on a null valued expression.
At line:2 char:1
+ $value.toString()
+ ~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (:) [], RuntimeException
    + FullyQualifiedErrorId : InvokeMethodOnNull

Chaque fois que nous voyons la phrase “Vous ne pouvez pas appeler une méthode sur une expression à valeur nulle”, nous pouvons rechercher des emplacements pour appeler une méthode sur une variable sans d’abord la vérifier pour les valeurs $null.

Vérification des valeurs nulles dans PowerShell

Nous plaçons toujours la variable $null à gauche lors de la vérification des valeurs $null dans les exemples.

Ce style d’écriture est intentionnel et accepté comme une bonne pratique PowerShell. Cependant, il existe certains scénarios où le placer à droite ne vous donnera pas le résultat attendu.

Regardons l’exemple suivant et essayons de prédire quels seront les résultats :

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

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

Si nous ne définissons pas $value, le premier évaluera $true, et notre message sera The array is $null. La mise en garde ici est que la création d’une $value qui permettra aux deux résultats d’être $false est possible.

Production:

$value = @( $null )

Dans ce cas, la variable $value est un tableau qui contient un $null.

L’opérateur -eq vérifie chaque valeur du tableau et renvoie le $null qui correspond (cela s’évalue à $false). L’opérateur -ne renverra tout ce qui ne correspond pas à la valeur $null, et dans ce cas, il n’y a aucun résultat (cela sera également évalué à $false).

Ainsi, aucun des deux ne sera $true même si l’un d’entre eux devrait l’être.

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

Article connexe - PowerShell Variable