Усі ці відповіді не виділяють, що, порівнюючи значення з $ 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!