Wszystkie te odpowiedzi nie podkreślają tego, że porównując wartość z $ null, musisz umieścić $ null po lewej stronie, w przeciwnym razie możesz mieć kłopoty podczas porównywania z wartością typu kolekcji. Zobacz: 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"
}
Powyższy blok jest (niestety) wykonywany. Jeszcze bardziej interesujące jest to, że w Powershell wartość $ może być równa $ null i nie $ null:
$value = @(1, $null, 2, $null)
if (($value -eq $null) -and ($value -ne $null)) {
Write-Host "$value is both $null and not $null"
}
Dlatego ważne jest, aby umieścić $ null po lewej stronie, aby te porównania działały z kolekcjami:
$value = @(1, $null, 2, $null)
if (($null -eq $value) -and ($null -ne $value)) {
Write-Host "$value is both $null and not $null"
}
Wydaje mi się, że to po raz kolejny pokazuje moc Powershell!