क्या पावरशेल फ़ंक्शन निर्धारित कर सकता है कि यह पाइपलाइन के हिस्से के रूप में चलाया जा रहा है या नहीं? मेरे पास एक ऐसा फ़ंक्शन है जो FileInfo
के उदाहरणों के साथ एक सरणी को पॉप्युलेट करता है जिसे मैं पाइपलाइन पर "उपज" करना चाहता हूं यदि फ़ंक्शन इस तरह से चल रहा है या कुछ सुंदर आउटपुट उत्पन्न करता है यदि फ़ंक्शन को कमांड लाइन से स्वयं ही बुलाया जा रहा है।क्या मैं निर्धारित कर सकता हूं कि पाइपलाइन के हिस्से के रूप में PowerShell फ़ंक्शन चल रहा है या नहीं?
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
), तो यह कंसोल में सरणी की सामग्री को बहुत प्रिंट करेगा।
क्या ऐसा करने का कोई तरीका है? यदि इस तरह की चीज़ों को हासिल करने के लिए एक और "मूर्ख" तरीका है, तो मुझे भी जानना होगा।
ऐसा क्यों downvoted किया गया था।? –