अब यह शायद एक बहुत ही सरल समाधान है, लेकिन मुझे यह समझ में नहीं आ रहा है। मैं एक विशिष्ट फ़ाइल प्रकार के लिए एक निर्देशिका और उसके उप-फ़ोल्डर खोजने की कोशिश कर रहा हूं। फ़ाइल मौजूद होने पर मेरा कोड वर्तमान में सत्य के रूप में लौटता है, लेकिन मैं इसे टर्मिनल पर झूठी वापसी करने की भी कोशिश कर रहा हूं। नीचे मेरा कोड है
Get-ChildItem "$ScriptPath\$kit" -recurse -include "*.pem"| ForEach-Object {Test-Path $_}
अब यह टर्मिनल पर उस फ़ोल्डर के लिए true
के रूप में वापस आ जाएगा जिसमें PEM फ़ाइल है। लेकिन मैं चाहता हूं कि यह उस फ़ोल्डर के लिए टर्मिनल पर false
के रूप में भी वापस आए, जिसमें फ़ाइल नहीं है, क्योंकि मैं प्रदर्शन करने के लिए true
और false
का उपयोग करने की योजना बना रहा हूं। कोड के विभिन्न सेट।
2 जवाब
$s = 'C:\Users\user\Desktop\Source'
foreach ($d in (Get-ChildItem -Recurse $s -Directory:$true)) {
if ($d.GetFiles('*.pem')) {
$true
} else {
$false
}
}
यह आपको शुरू करना चाहिए... मैं वास्तव में चाहता हूं कि पावरशेल में एक अंतर्निर्मित टर्नरी निर्माण हो ...
@($($True),$($False))[!$false]
या @ शैडो2020 द्वारा दिखाया गया। $() सबएक्सप्रेशन ऑपरेटर में कोई भी अभिव्यक्ति हो सकती है।
if..else
कोड में कुछ भी गलत नहीं है। यह पठनीय और समझने में आसान है।
यह आसान है। यदि $target_files का कोई मान है तो यह सत्य लौटाता है, यदि असत्य नहीं लौटाता है।
$target_files = Get-ChildItem "$ScriptPath\$kit" -recurse -include "*.pem"
if($target_files){
write-host "This returns true if there are files."
}
else{
write-host "This returns false if there are no files."
}
यदि आपके पास पावरहेल 7 है तो आप टर्नरी ऑपरेटर का उपयोग कर सकते हैं, हालांकि हम सभी के पास पावरहेल 7 नहीं है, इसलिए यदि आप आईएफ/ईएलएसई विधि में नहीं हैं तो भी इसे प्राप्त करने का एक तेज़ छोटा तरीका है। फ़ाइलें मौजूद हैं या नहीं, इस पर निर्भर करते हुए $result एक सही या गलत लौटाएगा।
$target_files = Get-ChildItem "$ScriptPath\$kit" -recurse -include "*.pem"
$result = (${true}, ${false})[-NOT $target_files]
$true
और$false
वापस करने के लिए प्राप्त कर सकता हूं लेकिन यह प्रत्येक फ़ोल्डर में प्रत्येक फ़ाइल की जांच करता है और 1 सत्य और 8 गलत लौटाएगा। मैं यह पता लगाने की अधिक कोशिश कर रहा हूं कि क्या फ़ोल्डर में विशिष्ट फ़ाइल एक्सटेंशन मौजूद है$true
और यदि यह मौजूद नहीं है तो$false
लौटाएं। तो अंततः यह 1$true
और 1$false
दिखाएगा