2012-09-10 9 views
8

मैं PowerShell में एक .exe पर एक कोशिश पकड़ने करना चाहते हैं, क्या मैं इस तरह दिखता है:पावरहेल में निष्पादन योग्य exe पर पकड़ने का प्रयास करें?

Try 
{ 
    $output = C:\psftp.exe ftp.blah.com 2>&1 
} 
Catch 
{ 
    echo "ERROR: " 
    echo $output 
    return 
} 

echo "DONE: " 
echo $output 

जब मैं अमान्य डोमेन कहना उपयोग करें, यह psftp.exe : Fatal: Network error: Connection refused की तरह एक त्रुटि देता है, लेकिन मेरे कोड को पकड़ने नहीं है उस।

मैं त्रुटियों को कैसे पकड़ूं?

उत्तर

15

try/catch पावरशेल में मूल निष्पादन योग्य के साथ काम नहीं करता है। Psftp.exe पर कॉल करने के बाद, स्वचालित चर $LastExitCode देखें। यही कारण है कि PSFTP के शामिल होंगे बाहर निकलें कोड उदा .:

$output = C:\psftp.exe ftp.blah.com 2>&1 
if ($LastExitCode -ne 0) 
{ 
    echo "ERROR: " 
    echo $output 
    return 
} 

स्क्रिप्ट ऊपर है कि exe रिटर्न 0 सफलता और गैर शून्य पर अन्यथा मान लिया जाता है। यदि ऐसा नहीं है, तो तदनुसार if (...) स्थिति समायोजित करें।

संबंधित मुद्दे