Ce que toutes ces réponses ne mettent pas en évidence, c'est que lorsque vous comparez une valeur à $ null, vous devez mettre $ null sur le côté gauche, sinon vous risquez d'avoir des problèmes lors de la comparaison avec une valeur de type collection. Voir: https://github.com/nightroman/PowerShellTraps/blob/master/Basic/Comparison-operators-with-collections/looks-like-object-is-null.ps1
$value = @(1, $null, 2, $null)
if ($value -eq $null) {
Write-Host "$value is $null"
}
Le bloc ci-dessus est (malheureusement) exécuté. Ce qui est encore plus intéressant, c'est que dans Powershell, une valeur $ peut être à la fois $ null et non $ null:
$value = @(1, $null, 2, $null)
if (($value -eq $null) -and ($value -ne $null)) {
Write-Host "$value is both $null and not $null"
}
Il est donc important de mettre $ null sur le côté gauche pour que ces comparaisons fonctionnent avec les collections:
$value = @(1, $null, 2, $null)
if (($null -eq $value) -and ($null -ne $value)) {
Write-Host "$value is both $null and not $null"
}
Je suppose que cela montre encore une fois la puissance de Powershell!