Una funzione di PowerShell può determinare se viene eseguita come parte di una pipeline? Ho una funzione che popola un array con istanze di FileInfo
che vorrei "rendere" alla pipeline se la funzione viene eseguita in questo modo o produrre un output piuttosto carino se la funzione viene invocata da solo dalla riga di comando.Posso determinare se una funzione di PowerShell è in esecuzione come parte di una pipeline?
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
}
}
}
In sostanza, sto cercando di capire come implementare INVOKED_IN_PIPELINE
. Se viene eseguito in una pipeline (ad esempio Do-Something | format-table fullname
), fornirei semplicemente l'array, ma se eseguito direttamente (ad esempio Do-Something
), sarebbe piuttosto stampare il contenuto dell'array sulla console.
C'è un modo per farlo? Se c'è un modo più "idiomatico" per raggiungere questo tipo di cose, sarei anche interessato a sapere.
Perché era questo downvoted? –