Все эти ответы не подчеркивают, что при сравнении значения с $ null вы должны поместить $ null в левую часть, иначе у вас могут возникнуть проблемы при сравнении со значением типа коллекции. См. 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"
}
Вышеупомянутый блок (к сожалению) выполнен. Что еще более интересно, в Powershell значение $ может быть как $ null, так и не $ null:
$value = @(1, $null, 2, $null)
if (($value -eq $null) -and ($value -ne $null)) {
Write-Host "$value is both $null and not $null"
}
Поэтому важно поставить $ null в левой части, чтобы эти сравнения работали с коллекциями:
$value = @(1, $null, 2, $null)
if (($null -eq $value) -and ($null -ne $value)) {
Write-Host "$value is both $null and not $null"
}
Думаю, это еще раз демонстрирует мощь Powershell!