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?

questionAnswers(4)

yourAnswerToTheQuestion