2012-06-28 13 views
37

मेरी स्क्रिप्ट में निष्पादन करता है, तो मैं इस बारे में एक आदेशPowershell परीक्षण पथ

pandoc -Ss readme.txt -o readme.html 

चलाने के लिए कर रहा हूँ लेकिन मुझे यकीन है कि अगर pandoc स्थापित किया गया है नहीं कर रहा हूँ। तो मैं करना चाहता हूं (छद्म कोड)

if (pandoc in the path) 
{ 
    pandoc -Ss readme.txt -o readme.html 
} 

मैं असली के लिए यह कैसे कर सकता हूं?

उत्तर

70

आप के माध्यम से Get-Command (gcm)

if (Get-Command "pandoc.exe" -ErrorAction SilentlyContinue) 
{ 
    pandoc -Ss readme.txt -o readme.html 
} 

आप अपने रास्ते में एक आदेश के गैर अस्तित्व का परीक्षण करने के उदाहरण एक त्रुटि संदेश दिखाने या निष्पादन योग्य (लगता है NuGet) डाउनलोड करने के लिए के लिए चाहते हैं, तो परीक्षण कर सकते हैं:

if ((Get-Command "pandoc.exe" -ErrorAction SilentlyContinue) -eq $null) 
{ 
    Write-Host "Unable to find pandoc.exe in your PATH" 
} 

inf पाने के लिए एक PowerShell सत्र में प्रयास करें

(Get-Help gcm).description 

गेट-कमांड के बारे में संस्कार।

+1

धन्यवाद डेविड। मैं यह कैसे कर सकता हूं, बड़ी लाल त्रुटि को शांत करना? –

+1

चूंकि किसी ने भी कहा नहीं है, जोड़ा गया "-इररएक्शन SilentlyContinue" बड़ी लाल त्रुटि को मारता है। –

+1

मैंने 'where.exe' का उपयोग किया और निकास कोड की जांच की, लेकिन वह पीएस कमांड नहीं था। – orad

1

बस अगर कुछ इसे उपयोगी पाते हैं। डेविड ब्रैबेंट के उत्तर की भावना में न्यूनतम संस्करण संख्याओं के चेक के साथ एक समारोह यहां दिया गया है।

Function Ensure-ExecutableExists 
{ 
    Param 
    (
     [Parameter(Mandatory = $True)] 
     [string] 
     $Executable, 

     [string] 
     $MinimumVersion = "" 
    ) 

    $CurrentVersion = (Get-Command -Name $Executable -ErrorAction Stop).Version 

    If($MinimumVersion) 
    { 
     $RequiredVersion = [version]$MinimumVersion 

     If($CurrentVersion -lt $RequiredVersion) 
     { 
      Throw "$($Executable) version $($CurrentVersion) does not meet requirements" 
     } 
    } 
} 

यह आपको निम्न कार्य करने की अनुमति देता है:

Ensure-ExecutableExists -Executable pscp -MinimumVersion "0.62.0.0" 

यह कुछ भी नहीं है, तो आवश्यकता पूरी की जाती है करता है या कोई त्रुटि फेंकता है ऐसा नहीं है।