Может ли функция 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 | format-table fullname
), я просто выдал бы массив, но если он будет запущен напрямую (например, Do-Something
), он будет довольно печатать содержимое массива на консоли.
Есть ли способ сделать это? Если есть более "идиоматический" способ достичь такого рода вещей, мне также будет интересно узнать.