मैं इस तरह कुछ करना चाहता हूँ: <filter1> के माध्यम सेक्या पावरहेल में सशर्त रूप से पाइप करना संभव है, यानी यदि कोई शर्त पूरी हो जाती है तो केवल पाइपलाइन के तत्व को निष्पादित करें?
<statement> | <filter1> | <filter2> if <condition> | <filter3> | <filter4> | <filter5>
< बयान > रन के परिणाम, तो वे के माध्यम से <filter2> केवल < अगर हालत >, तो शेष फिल्टर के माध्यम से भले ही पूरा किया जाता है चलाने चाहे < फ़िल्टर 2 > लागू किया गया था।
if (<condition>) {
<statement> | <filter1> | <filter2> | <filter3> | <filter4> | <filter5>
} else {
<statement> | <filter1> | <filter3> | <filter4> | <filter5>
}
जहां एक दिया फिल्टर परिणाम केवल सेट करते हैं तो एक निश्चित स्विच लागू किया गया था करने के लिए लागू किया जाता है यह कार्यों में उपयोगी होगा: इस के बराबर है। यदि सशर्त फ़िल्टर लंबी पाइपलाइन में जल्दी होता है, तो इसे कोड के बहुत से दोहराव में बाहरी आई-ब्लॉक परिणामों के साथ लिखना, खासकर यदि एक से अधिक सशर्त फ़िल्टर हैं।
यहां एक उदाहरण है। निम्न फ़ंक्शन किसी दिए गए खाते में दिए गए किसी भी निर्देशिका उपखंड में अनुमतियों को दिखाता है (उदा। Show-AccountPerms \\SERVERX\Marketing DOMAIN\jdoe
उपयोगकर्ता डोमेन \ jdoe \ SERVERX \ मार्केटिंग के अंतर्गत निर्देशिका पेड़ में अनुमतियों की एक रिपोर्ट देता है)।
function Show-AccountPerms {
param (
[parameter(mandatory = $true)]$rootdir,
[parameter(mandatory = $true)]$account,
[switch]$files,
[switch]$inherited
)
gci -r $rootdir `
|where {$_.psiscontainer} `
|foreach {
$dir = $_.fullname
(get-acl $_.pspath).access `
| where {$_.isinherited -eq 'False'} `
|foreach {
if ($_.identityreference -eq $account) {
"{0,-25}{1,-35}{2}" -f $_.identityreference, $_.filesystemrights, $dir
}
}
}
}
डिफ़ॉल्ट रूप से, यह केवल स्पष्ट अनुमतियां (| where {$_.isinherited -eq 'False'}
फिल्टर द्वारा लागू), और केवल निर्देशिकाओं पर (|where {$_.psiscontainer}
फिल्टर द्वारा लागू) दिखाता है।
हालांकि, अगर -फाइल स्विच का आह्वान किया जाता है, तो मैं |where {$_.psiscontainer}
को अनदेखा करना चाहता हूं, और | where {$_.isinherited -eq 'False'}
को अनदेखा कर दूंगा। बाहरी के साथ इसे पूरा करना अगर ब्लॉक कोड को चौगुनी कर देगा, और इसमें से लगभग 75% पुनरावृत्ति होगी। क्या इन फ़िल्टरों को ऑनलाइन रखने का कोई तरीका है लेकिन केवल उन्हें संबंधित स्विच के लागू करने के लिए शक्तियों को निर्देश देना गलत है?
कृपया ध्यान दें कि यह केवल उदाहरण है, इसलिए मुझे इस फ़ंक्शन के लिए विशिष्ट किसी भी कामकाज में रूचि नहीं है। मैं सशक्त रूप से पाइपिंग के संबंध में अपने सामान्य प्रश्न का उत्तर ढूंढ रहा हूं, इस विशेष कार्य को पूरा करने के लिए समाधान नहीं।
क्या आपने सुविधा अनुरोध किया है? यदि आप एक लिंक पोस्ट करते हैं तो अन्य लोग इस अनुरोध का समर्थन कर सकते हैं। –