Como lidar com $ null no pipeline
Geralmente, tenho a seguinte situação no meu código do PowerShell: Eu tenho uma função ou propriedade que retorna uma coleção de objetos ou$null
. Se você inserir os resultados no pipeline, também manipulará um elemento no pipeline se$null
é o único elemento
Exemplo:
$Project.Features | Foreach-Object { Write-Host "Feature name: $($_.Name)" }
Se não houver recursos ($ Project.Features retorna $ null), você verá uma única linha com "Nome do recurso:".
Eu vejo três maneiras de resolver isso:
if ($Project.Features -ne $null)
{
$Project.Features | Foreach-Object { Write-Host "Feature name: $($_.Name)" }
}
ou
$Project.Features | Where-Object {$_ -ne $null) | Foreach-Object {
Write-Host "Feature name: $($_.Name)"
}
ou
$Project.Features | Foreach-Object {
if ($_ -ne $null) {
Write-Host "Feature name: $($_.Name)" }
}
}
Mas, na verdade, não gosto de nenhuma dessas abordagens, mas qual é a melhor abordagem?