В моем коде PowerShell часто возникает следующая ситуация: у меня есть функция или свойство, которое возвращает коллекцию объектов или $null
. Если вы вставляете результаты в конвейер, вы также обрабатываете элемент в конвейере, если $null
- единственный элемент.
Пример:
$Project.Features | Foreach-Object { Write-Host "Feature name: $($_.Name)" }
Если функций нет ($ Project.Features возвращает $null), вы увидите одну строку с названием функции:.
Я вижу три способа решить эту проблему:
if ($Project.Features -ne $null)
{
$Project.Features | Foreach-Object { Write-Host "Feature name: $($_.Name)" }
}
или
$Project.Features | Where-Object {$_ -ne $null) | Foreach-Object {
Write-Host "Feature name: $($_.Name)"
}
или
$Project.Features | Foreach-Object {
if ($_ -ne $null) {
Write-Host "Feature name: $($_.Name)" }
}
}
Но на самом деле мне не нравится какой-либо из этих подходов, но что вы видите как лучший подход?