2010-01-17 11 views
34

मैं PowerShell में निष्पादन योग्य कैसे चला सकता हूं और यदि कोई कथन निर्धारित करता है कि यह सफल हुआ या विफल हुआ?पावरशेल से एक एक्सई को आमंत्रित करें और सफलता या विफलता पर प्रतिक्रिया प्राप्त करें

अधिक विशेष रूप से मैं PowerShell स्क्रिप्ट से समाधान बनाने के लिए devenv.exe प्राप्त करने का प्रयास कर रहा हूं और मुझे यह जानने की आवश्यकता है कि यह सफल हुआ या विफल हुआ। तक विफल रहा है, मेरा मतलब है कि निर्माण और मैं devenv खोल के लिए कुछ भेज रहा है बाहर यह सोचते हैं रहा हूँ में नाकाम रही है (stderr धारा में संभवतः?)

मैं &, Invoke-Expression और Invoke-Item का उपयोग कर की कोशिश की और उन सभी पाने में कामयाब रहे exe चलाने के लिए। लेकिन मैं सफलता/असफलताओं पर प्रतिक्रिया प्राप्त करने में कभी सक्षम नहीं था।

+0

वहाँ एक कारण है कि आप MSBuild.exe का उपयोग नहीं करते समाधान devenv.exe के बजाय का निर्माण करने की है? – Filburt

+1

एकमात्र कारण यह है कि मैं msbuild का उपयोग करने में पर्याप्त कुशल नहीं हूं। मेरे पास एक समाधान मशीन है जो मेरे समाधान बनाती है लेकिन मुझे नहीं पता कि मेरी स्थानीय मशीन के लिए बिल्ड परिभाषाओं का पुन: उपयोग कैसे करें: | – urig

+3

यदि आप इसे यहां देने का प्रयास करना चाहते हैं तो समाधानों के निर्माण के लिए msbuild का उपयोग कैसे करें: http://msdn.microsoft.com/en-us/library/z7f65y0d.aspx – Filburt

उत्तर

59

क्या आपने $LASTEXITCODE चर का उपयोग करने का प्रयास किया है? इसमें अंतिम .exe का निकास कोड शामिल होगा जो लागू किया गया था।

+2

यह चाल है। सफल होने पर $ lastexitcode -eq 0, जब इमारत विफल हुई। :) – urig

+0

काम नहीं करता है। परिवर्तनीय खाली है। –

+0

महान इंटरैक्टिव रूप से काम करता है। हालांकि, मैं संकेत देना चाहता था कि अंतिम आदेश सफल हुआ या नहीं; निष्पादन योग्य चलते समय '$ LastExitCode' केवल तभी बदलता है, क्योंकि फ़ंक्शन और सीएमडीलेट्स में "निकास कोड" नहीं होता है; यह संकेत देने में भ्रामक हो सकता है, क्योंकि मैं यह तय नहीं कर सकता कि निकास कोड अंतिम बयान से आया था या नहीं। मेरी इच्छा है कि सीएमडीलेट हमेशा इस चर को रीसेट करता है। –

2
.\YOUREXE.exe 
if($LASTEXITCODE eq 0) 
{ 
    Write-Host "The last PS command executed successfully" 
} 
else 
{ 
    Write-Host "The last PS command failed" 
} 
संबंधित मुद्दे

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