Windows PowerShell आदेशों के लिए त्रुटि क्रियाओं को समझना
जब कोई PowerShell आदेश कोई त्रुटि जनरेट करता है, तो वह त्रुटि दो प्रकारों में से एक हो सकती है, या तो समाप्ति त्रुटि या गैर-समाप्ति त्रुटि. समाप्ति त्रुटि तब उत्पन्न होती है जब Windows PowerShell निर्धारित करता है कि त्रुटि और आदेश रुकने के बाद संसाधन जारी रखना संभव नहीं है. एक गैर-समाप्ति त्रुटि तब होती है जब Windows PowerShell निर्धारित करता है कि त्रुटि के बाद संसाधन जारी रखना संभव है. जब कोई गैर-समाप्ति त्रुटि उत्पन्न होती है, तो स्क्रिप्ट चल रहा है या पाइपलाइन चल रहा जारी रहेगा। त्रुटियों को समाप्त करने की तुलना में गैर-समाप्ति त्रुटियां अधिक सामान्य हैं।
निम्न आदेश पर विचार करें:
Get-WmiObject -Class Win32_BIOS -ComputerName LON-SVR1,LON-DC1
यदि आप मानते हैं कि LON-SVR1 कंप्यूटर नेटवर्क पर उपलब्ध नहीं है, तो प्राप्त-WmiObject उस कंप्यूटर को क्वेरी करने का प्रयास करते समय त्रुटि जनरेट करता है। हालाँकि, आदेश अगले कंप्यूटर, LON-DC1के साथ जारी रह सकता है। इसलिए त्रुटि एक गैर-समाप्ति त्रुटि है।
$ErrorActionPreference
Windows PowerShell में $ErrorActionPreference
नाम का एक अंतर्निहित, वैश्विक चर है। जब कोई कमांड एक गैर-समाप्ति त्रुटि उत्पन्न करता है, तो कमांड उस चर को यह तय करने के लिए जांचता है कि उसे क्या करना चाहिए। चर में निम्नलिखित चार संभावित मानों में से एक हो सकता है:
- जारी रखें डिफ़ॉल्ट है, और यह आदेश को एक त्रुटि संदेश प्रदर्शित करने और चलाना जारी रखने के लिए कहता है।
- SilentlyContinue आदेश को कोई त्रुटि संदेश प्रदर्शित नहीं करने के लिए, लेकिन चलना जारी रखने के लिए कहता है।
- पूछताछ करें उपयोगकर्ता से पूछने के लिए एक संकेत प्रदर्शित करने के लिए कमांड को बताता है कि क्या करना है।
- रोकें त्रुटि को समाप्त करने और चलने से रोकने के लिए आदेश देता है।
$ErrorActionPreference
चर सेट करने के लिए, निम्न सिंटैक्स का उपयोग करें:
$ErrorActionPreference = 'Inquire'
नोट
SilentlyContinue का उपयोग करने के बारे में चयनात्मक रहें $ErrorActionPreference
. आप सोच सकते हैं कि यह आपकी स्क्रिप्ट को उपयोगकर्ताओं के लिए बेहतर बनाता है, लेकिन यह समस्या निवारण को कठिन बना सकता है।
यदि आप अपनी स्क्रिप्ट में कोई त्रुटि ट्रैप करना चाहते हैं ताकि आप त्रुटि प्रबंधित कर सकें, तो आदेशों को रोकें क्रिया का उपयोग करना चाहिए. आप केवल समाप्ति त्रुटियों को ट्रैप और प्रबंधित कर सकते हैं।
-ErrorAction पैरामीटर
सभी Windows PowerShell आदेशों में -ErrorAction पैरामीटर होता है। इस पैरामीटर में उपनाम -EAहै। पैरामीटर $ErrorActionPreference
के समान मानों को स्वीकार करता है, और पैरामीटर उस आदेश के लिए चर को ओवरराइड करता है। यदि आप किसी कमांड पर कोई त्रुटि होने की अपेक्षा करते हैं, तो आप उस कमांड की त्रुटि क्रिया को रोकें पर सेट करने के लिए -ErrorActionउपयोग करते हैं। ऐसा करने से आप उस कमांड के लिए त्रुटि को ट्रैप और प्रबंधित कर सकते हैं लेकिन $ErrorActionPreference
में कार्रवाई का उपयोग करने के लिए अन्य सभी कमांड छोड़ देते हैं। एक उदाहरण है:
Get-WmiObject -Class Win32_BIOS -ComputerName LON-SVR1,LON-DC1 -ErrorAction Stop
आपके द्वारा $ErrorActionPreference
संशोधित करने का एकमात्र समय तब होता है जब आप Windows PowerShell आदेश के बाहर किसी त्रुटि की अपेक्षा करते हैं, जैसे कि जब आप निम्न जैसी कोई विधि चला रहे हों:
Get-Process –Name Notepad | ForEach-Object { $PSItem.Kill() }
इस उदाहरण में, किल() विधि कोई त्रुटि उत्पन्न हो सकता है। लेकिन क्योंकि यह Windows PowerShell कमांड नहीं है, इसमें -ErrorAction पैरामीटर नहीं है। इसके बजाय आप $ErrorActionPreference
को के लिए सेट करेंगे रोकें विधि चलाने से पहले, और उसके बाद चर को वापस सेट करें जारी रखें विधि चलाने के बाद।