Может ли функция PowerShell определить, выполняется ли она как часть конвейера? У меня есть функция, которая заполняет массив экземплярами FileInfo
, которые я хотел бы «передать» конвейеру, если функция выполняется таким образом, или произвести какой-то красивый вывод, если функция вызывается сама по себе из командной строки.
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
}
}
}
По сути, я пытаюсь понять, как реализовать INVOKED_IN_PIPELINE
. Если он выполняется в конвейере (например, Do-Something | полное имя-таблицы-формата
), Я бы просто выдал массив, но если запустить его напрямую (например, Do-Something
), он будет красиво выводить содержимое массива на консоль.
Есть ли способ сделать это? Если есть более «идиоматический» способ достичь такого рода вещей, мне также было бы интересно узнать.