आप यहाँ से दूर जा रहे हैं।
आपके पास पहले से ही एक अच्छा, बड़ा त्रुटि संदेश है। पृथ्वी पर आप हर एक कमांड के$?
बाद स्पष्ट रूप से चेक लिखने वाला कोड क्यों लिखना चाहेंगे ? यह काफी बोझिल और त्रुटि प्रवण है। सही समाधान रोक जाँच है ।$?
इसके बजाय, आपके लिए उड़ाने के लिए पॉवरशेल के अंतर्निहित तंत्र का उपयोग करें। आप त्रुटि वरीयता को उच्चतम स्तर पर सेट करके इसे सक्षम करते हैं :
$ErrorActionPreference = 'Stop'
मैंने इसे कभी भी लिखी गई हर एक स्क्रिप्ट के शीर्ष पर रखा, और अब मुझे जांचने की आवश्यकता नहीं है $?
। यह मेरे कोड को काफी सरल और अधिक विश्वसनीय बनाता है।
यदि आप ऐसी परिस्थितियों में भाग लेते हैं, जहां आपको वास्तव में इस व्यवहार को अक्षम करने की आवश्यकता होती है, तो आप या catch
तो त्रुटि का सामना कर सकते हैं या आम का उपयोग करके किसी विशेष फ़ंक्शन के लिए सेटिंग पास कर सकते हैं -ErrorAction
। आपके मामले में, आप संभवतः अपनी प्रक्रिया को पहली त्रुटि पर रोकना चाहते हैं, त्रुटि को पकड़ते हैं, और फिर उसे लॉग इन करते हैं।
ध्यान दें कि यह उस मामले को नहीं संभालता है जब बाहरी निष्पादक विफल हो जाते हैं (पारंपरिक रूप से कोड नॉनजेरो से बाहर निकलें), इसलिए आपको अभी भी यह जांचने की आवश्यकता है $LASTEXITCODE
कि क्या आप किसी को आमंत्रित करते हैं। इस सीमा के बावजूद, सेटिंग अभी भी बहुत सारे कोड और प्रयास बचाता है।
अतिरिक्त विश्वसनीयता
आप सख्त मोड का उपयोग करने पर भी विचार कर सकते हैं :
Set-StrictMode -Version Latest
जब आप किसी गैर-मौजूद चर और अन्य अजीब स्थितियों का उपयोग करते हैं तो यह PowerShell को चुपचाप आगे बढ़ने से रोकता है। ( -Version
यह क्या प्रतिबंधित करता है, इसके बारे में विवरण के लिए पैरामीटर देखें ।)
इन दोनों सेटिंग्स के संयोजन से PowerShell बहुत अधिक विफल-फास्ट भाषा बन जाती है, जो इसमें प्रोग्रामिंग को काफी आसान बना देती है।