Cómo manejar $ null en la tubería

A menudo tengo la siguiente situación en mi código de PowerShell: tengo una función o propiedad que devuelve una colección de objetos, o$null. Si inserta los resultados en la tubería, también maneja un elemento en la tubería si$null Es el único elemento.

Ejemplo:

$Project.Features | Foreach-Object { Write-Host "Feature name: $($_.Name)" }

Si no hay características ($ Project.Features devuelve $ nulo), verá una sola línea con "Nombre de característica:".

Veo tres formas de resolver esto:

if ($Project.Features -ne $null)
{
  $Project.Features | Foreach-Object { Write-Host "Feature name: $($_.Name)" }
}

o

$Project.Features | Where-Object {$_ -ne $null) | Foreach-Object { 
  Write-Host "Feature name: $($_.Name)" 
}

o

$Project.Features | Foreach-Object { 
  if ($_ -ne $null) {
    Write-Host "Feature name: $($_.Name)" }
  }
}

Pero en realidad no me gusta ninguno de estos enfoques, pero ¿cuál es el mejor enfoque?

Respuestas a la pregunta(4)

Su respuesta a la pregunta