Lo que no destacan todas estas respuestas es que al comparar un valor con $ null, debe poner $ null en el lado izquierdo; de lo contrario, puede tener problemas al comparar con un valor de tipo colección. Ver: 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"
}
El bloque anterior se ejecuta (desafortunadamente). Lo que es aún más interesante es que en Powershell un $ value puede ser $ null y no $ null:
$value = @(1, $null, 2, $null)
if (($value -eq $null) -and ($value -ne $null)) {
Write-Host "$value is both $null and not $null"
}
Por eso es importante poner $ null en el lado izquierdo para que estas comparaciones funcionen con colecciones:
$value = @(1, $null, 2, $null)
if (($null -eq $value) -and ($null -ne $value)) {
Write-Host "$value is both $null and not $null"
}
¡Supongo que esto muestra una vez más el poder de Powershell!