मैं यह जांचने की कोशिश कर रहा हूं कि किसी फ़ोल्डर में फाइलों की एक सूची मौजूद है, यदि वे मौजूद हैं तो होस्ट करने के लिए लिखें कि वे होस्ट करने के लिए नहीं लिखते हैं कि वे नहीं करते हैं।

मेरा कोड यह जांचने के लिए काम करता है कि क्या सभी फाइलें मौजूद हैं, हालांकि कंसोल पर लिखने का प्रयास करते समय यह हमेशा काम करने का मूल्यांकन करता है, भले ही फाइलें गायब हों।

यह $msis में प्रत्येक फ़ाइल के लिए सही होगा यदि फ़ोल्डर में मौजूद है


        $Instance = "TEST"
        $msipath = "D:\CCS\${Instance}\"
        $msis = @("${msipath}CCS1.msi", "${msipath}CC2.msi", "${msipath}CCS3.msi", "${msipath}CCS4.msi")
        foreach($msi in $msis){
          $test = (Test-Path $msi) -PathType leaf)
          write-host "$test"
    }
      

मैंने जोड़ा और यदि कोई और कथन यह जांचने के लिए है कि क्या $test सत्य है write-host "I Work" और write-host "I Fail"

मेरी समस्या यह है कि जब फाइलें गायब हैं तब भी यह "मैं काम करता हूं" का मूल्यांकन करेगा, यह केवल तभी होगा जब सभी फाइलें मौजूद न हों कि यह "मैं असफल" का मूल्यांकन करता हूं।

मैं जो करने की कोशिश कर रहा हूं वह यह है कि अगर एक या अधिक फाइलें गायब हैं तो इसे "मैं असफल" होस्ट करने के लिए लिखता हूं।


  if ($test -eq 'True')
  { write-host "I work" }
  else
  {
  write-host "I fail"
  }

0
Dave 9 जुलाई 2021, 17:01

2 जवाब

सबसे बढ़िया उत्तर

Test-Path -Path इनपुट के रूप में <string[]> लेता है, अर्थात, यह कई पथों का मूल्यांकन कर सकता है, यहां लूप करने की कोई आवश्यकता नहीं है:

$Instance = "TEST"
$msipath = "D:\CCS\$Instance"
$msis = 'CCS1.msi', 'CCS2.msi', 'CCS3.msi', 'CCS4.msi' | ForEach-Object {
    Join-Path $msipath -ChildPath $_
}

If((Test-Path $msis).Contains($false))
{
    write-host "I Fail"
}
else
{
    write-host "I Work"
}
0
Santiago Squarzon 9 जुलाई 2021, 16:06

थोड़ा ब्रेक और फिर से आने के बाद अब मैं इसे काम करने के लिए अपनी स्क्रिप्ट को थोड़ा सा बदलने में कामयाब रहा हूं।


    $Instance = "TEST"
    $msipath = "D:\CCS\${Instance}\"
    $msis = @("${msipath}CCS1.msi", "${msipath}CCS2.msi", "${msipath}CCS3.msi", "${msipath}CCS4.msi")
    
    if (($msis | foreach {test-path $msis}) -contains $false)
    {
        write-host "I Fail"
    }
    else
    {
        write-host "I Work"
    }

यदि $msis में कोई फ़ाइल गुम है, तो यह अब "मैं विफल" दिखाएगा।

0
Dave 9 जुलाई 2021, 14:41