O que todas essas respostas não destacam é que, ao comparar um valor com $ null, você deve colocar $ null no lado esquerdo, caso contrário, poderá ter problemas ao comparar com um valor do tipo coleção. Veja: 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"
}
O bloco acima é (infelizmente) executado. O que é ainda mais interessante é que no Powershell um valor $ pode ser $ null e não $ null:
$value = @(1, $null, 2, $null)
if (($value -eq $null) -and ($value -ne $null)) {
Write-Host "$value is both $null and not $null"
}
Portanto, é importante colocar $ null no lado esquerdo para fazer essas comparações funcionarem com coleções:
$value = @(1, $null, 2, $null)
if (($null -eq $value) -and ($null -ne $value)) {
Write-Host "$value is both $null and not $null"
}
Acho que isso mostra mais uma vez o poder do Powershell!