Variables nulles dans PowerShell
- Introduction à la variable nulle dans PowerShell
- Impacts de la variable Null dans PowerShell
- Vérification des valeurs 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 specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.
LinkedIn