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?