Что все эти ответы не выделяют, так это то, что при сравнении значения с $ 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!