पावरशेल में कई निष्पादन मोड हैं जो परिभाषित करते हैं कि किस प्रकार के कोड को चलाने की अनुमति है, यह एक रजिस्ट्री कुंजी द्वारा शासित है जो एचकेएलएम हाइव में रहता है। 4 अलग निष्पादन मोड हैं, वे हैं:
- वर्जित: डिफ़ॉल्ट निष्पादन नीति, केवल स्क्रिप्ट, इंटरैक्टिव कमांड नहीं चलाती है।
- सभी हस्ताक्षर किए: स्क्रिप्ट चलाता है; सभी स्क्रिप्ट और कॉन्फ़िगरेशन फ़ाइलों को उस प्रकाशक द्वारा हस्ताक्षरित किया जाना चाहिए जिस पर आप भरोसा करते हैं; यह पुष्टि करने के बाद कि आप प्रकाशक पर भरोसा करते हैं, आपको हस्ताक्षरित (लेकिन दुर्भावनापूर्ण) स्क्रिप्ट चलाने के जोखिम के लिए खुलता है।
- रिमोट साइन किया गया: हस्ताक्षर के बिना स्थानीय स्क्रिप्ट चलाते हैं। किसी भी डाउनलोड की गई स्क्रिप्ट को डिजिटल हस्ताक्षर की आवश्यकता होती है, यहां तक कि एक यूएनसी पथ भी।
- अप्रतिबंधित: स्क्रिप्ट चलाता है; माइक्रोसॉफ्ट आउटलुक, इंटरनेट एक्सप्लोरर, आउटलुक एक्सप्रेस और विंडोज मैसेंजर जैसे संचार अनुप्रयोगों से डाउनलोड की गई सभी स्क्रिप्ट और कॉन्फ़िगरेशन फ़ाइलें यह पुष्टि करने के बाद चलती हैं कि आप इंटरनेट से उत्पन्न फ़ाइल को समझते हैं; कोई डिजिटल हस्ताक्षर की आवश्यकता नहीं है; इन अनुप्रयोगों से डाउनलोड की गई हस्ताक्षरित, दुर्भावनापूर्ण स्क्रिप्ट चलाने के जोखिम के लिए आपको खुलता है
PowerShell की डिफ़ॉल्ट निष्पादन नीति को प्रतिबंधित कहा जाता है। इस मोड में, PowerShell केवल एक इंटरैक्टिव खोल के रूप में कार्य करता है। यह स्क्रिप्ट नहीं चलाता है, और केवल उस प्रकाशक द्वारा हस्ताक्षरित कॉन्फ़िगरेशन फ़ाइलों को लोड करता है जिस पर आप भरोसा करते हैं। यदि आपको गंदा लाल त्रुटि मिल रही है तो सबसे संभावित कारण यह है कि आप एक हस्ताक्षरित स्क्रिप्ट चलाने की कोशिश कर रहे हैं। निष्पादन नीति को अप्रतिबंधित करने, अपनी स्क्रिप्ट चलाने और फिर बदलने के लिए सबसे सुरक्षित बात यह है कि इसे प्रतिबंधित करने के लिए वापस बदलें.
इसे अप्रतिबंधित में बदलने के लिए व्यवस्थापकीय PowerShell से निम्न आदेश चलाएं:
Set-ExecutionPolicy Unrestricted
आपसे पूछा जाएगा कि क्या आप सुनिश्चित हैं कि आप निष्पादन नीति को बदलना चाहते हैं, फिर से एंटर बटन दबाएं।
Set-ExecutionPolicy Restricted
फिर से आपसे पूछा जाएगा कि क्या आप सुनिश्चित हैं कि आप निष्पादन मोड को बदलना चाहते हैं, आगे बढ़ें और एंटर दबाएं।