Chức năng PowerShell có thể xác định xem nó có đang chạy như một phần của đường ống không? Tôi có một chức năng populates một mảng với các trường hợp của FileInfo
mà tôi muốn "mang lại" cho các đường ống nếu chức năng đang được chạy theo cách này hoặc sản xuất một số đầu ra khá nếu chức năng đang được gọi của chính nó từ dòng lệnh.Tôi có thể xác định xem chức năng PowerShell có đang chạy như một phần của đường ống không?
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
}
}
}
Về cơ bản, tôi đang cố gắng tìm hiểu cách triển khai INVOKED_IN_PIPELINE
. Nếu nó chạy trong một đường ống (ví dụ: Do-Something | format-table fullname
), tôi sẽ chỉ đơn giản là tạo mảng, nhưng nếu chạy trực tiếp (ví dụ: Do-Something
), nó sẽ in các nội dung của mảng đó lên bảng điều khiển.
Có cách nào để thực hiện việc này không? Nếu có một cách "thành ngữ" hơn để đạt được loại điều này, tôi cũng sẽ muốn biết.
Tại sao này downvoted? –