¿Puede una función de PowerShell determinar si se está ejecutando como parte de una tubería? Tengo una función que puebla una matriz con instancias de FileInfo
que me gustaría "ceder" a la tubería si la función se está ejecutando de esta manera o producir alguna salida bonita si la función se está invocando por sí misma desde la línea de comandos.¿Puedo determinar si una función de PowerShell se está ejecutando como parte de una canalización?
function Do-Something {
$file_infos = @()
# Populate $file_infos with FileInfo instances...
if (INVOKED_IN_PIPELINE) {
return $file_infos
}
else {
foreach ($file_info in $file_infos) {
write-host -foregroundcolor yellow $file_info.fullname
}
}
}
Básicamente, estoy tratando de encontrar la manera de poner en práctica INVOKED_IN_PIPELINE
. Si se ejecuta en una canalización (por ejemplo, Do-Something | format-table fullname
), simplemente cedería la matriz, pero si se ejecuta directamente (por ejemplo, Do-Something
), imprimiría bastante bien el contenido de la matriz en la consola.
¿Hay alguna manera de hacerlo? Si hay una forma más "idiomática" de lograr este tipo de cosas, también me interesaría saber.
¿Por qué este downvoted? –