Ciò che tutte queste risposte non evidenziano è che quando si confronta un valore con $ null, è necessario inserire $ null sul lato sinistro, altrimenti si potrebbero avere problemi durante il confronto con un valore di tipo raccolta. Vedi: 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"
}
Il blocco sopra è (sfortunatamente) eseguito. La cosa ancora più interessante è che in Powershell un valore $ può essere sia $ null che non $ null:
$value = @(1, $null, 2, $null)
if (($value -eq $null) -and ($value -ne $null)) {
Write-Host "$value is both $null and not $null"
}
Quindi è importante mettere $ null sul lato sinistro per far funzionare questi confronti con le raccolte:
$value = @(1, $null, 2, $null)
if (($null -eq $value) -and ($null -ne $value)) {
Write-Host "$value is both $null and not $null"
}
Immagino che questo mostri ancora una volta la potenza di Powershell!