अधिकांश मौजूदा उत्तर कैसे समझाते हैं , लेकिन बहुत कम लोग क्यों समझाते हैं । और इससे पहले कि आप इंटरनेट पर अजनबियों से कोड निष्पादित करने के चारों ओर जाएं, विशेष रूप से कोड जो सुरक्षा उपायों को निष्क्रिय करता है, आपको ठीक से समझना चाहिए कि आप क्या कर रहे हैं। तो यहाँ इस समस्या पर थोड़ा और विस्तार है।
TechNet से निष्पादन नीतियों के बारे में पृष्ठ :
Windows PowerShell निष्पादन नीतियाँ आपको उन शर्तों को निर्धारित करने देती हैं जिनके तहत Windows PowerShell कॉन्फ़िगरेशन फ़ाइलों को लोड करता है और स्क्रिप्ट चलाता है।
PowerShell मूल बातें - निष्पादन नीति और कोड हस्ताक्षर द्वारा, के लाभ, जो हैं:
- निष्पादन का नियंत्रण - स्क्रिप्ट निष्पादित करने के लिए विश्वास के स्तर को नियंत्रित करें।
- कमांड हाईजैक - मेरे रास्ते में कमांड के इंजेक्शन को रोकें।
- पहचान - क्या ऐसी स्क्रिप्ट बनाई जाती है और जिस पर डेवलपर I ट्रस्ट और / या प्रमाण पत्र प्राधिकारी I ट्रस्ट से प्रमाणपत्र के साथ हस्ताक्षरित है।
- अखंडता - लिपियों को मैलवेयर या दुर्भावनापूर्ण उपयोगकर्ता द्वारा संशोधित नहीं किया जा सकता है।
अपनी वर्तमान निष्पादन नीति की जांच करने के लिए, आप चला सकते हैं Get-ExecutionPolicy
। लेकिन आप शायद यहाँ हैं क्योंकि आप इसे बदलना चाहते हैं।
ऐसा करने के लिए आप Set-ExecutionPolicy
cmdlet चलाएंगे ।
निष्पादन नीति को अपडेट करते समय आपके पास दो प्रमुख निर्णय होंगे।
निष्पादन नीति प्रकार:
Restricted
Either - सिस्टम पर कोई स्क्रिप्ट स्थानीय, रिमोट या डाउनलोड नहीं की जा सकती है।
AllSigned
- सभी स्क्रिप्ट्स को चलाया जाता है उन्हें डिजिटल रूप से हस्ताक्षरित करने की आवश्यकता होती है।
RemoteSigned
- सभी दूरस्थ लिपियों (यूएनसी) या डाउनलोड किए जाने की आवश्यकता है।
Unrestricted
- किसी भी प्रकार की स्क्रिप्ट के लिए किसी भी हस्ताक्षर की आवश्यकता नहीं है।
नए बदलाव का दायरा
LocalMachine
† - निष्पादन नीति कंप्यूटर के सभी उपयोगकर्ताओं को प्रभावित करता है।
CurrentUser
- निष्पादन नीति केवल वर्तमान उपयोगकर्ता को प्रभावित करती है।
Process
- निष्पादन नीति केवल वर्तमान Windows PowerShell प्रक्रिया को प्रभावित करती है।
† = डिफ़ॉल्ट
उदाहरण के लिए : यदि आप नीति को केवल CurrentUser के लिए RemoteSign में बदलना चाहते हैं, तो आप निम्न कमांड चलाएंगे:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
नोट : निष्पादन नीति को बदलने के लिए, आपको व्यवस्थापक के रूप में PowerShell चलाना चाहिए । यदि आप नियमित मोड में हैं और निष्पादन नीति को बदलने का प्रयास करते हैं, तो आपको निम्न त्रुटि मिलेगी:
रजिस्ट्री कुंजी 'HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ PowerShell \ 1 \ ShellIds \ Microsoft.PowerShell' तक पहुँच अस्वीकृत है। डिफ़ॉल्ट (LocalMachine) दायरे के लिए निष्पादन नीति को बदलने के लिए, "व्यवस्थापक के रूप में चलाएँ" विकल्प के साथ Windows PowerShell प्रारंभ करें।
यदि आप अपनी स्वयं की स्क्रिप्ट पर आंतरिक प्रतिबंधों को कड़ा करना चाहते हैं जो इंटरनेट से डाउनलोड नहीं किए गए हैं (या कम से कम यूएनसी मेटाडेटा शामिल नहीं है), तो आप पॉलिसी को केवल हस्ताक्षरित श्रीपट चलाने के लिए मजबूर कर सकते हैं। अपनी स्वयं की लिपियों पर हस्ताक्षर करने के लिए, आप साइनिंग पॉवरशेल लिपियों पर स्कॉट हैंसेलमैन के लेख के निर्देशों का पालन कर सकते हैं ।
नोट : अधिकांश लोगों को जब भी Powershell खोलते हैं तो यह त्रुटि होने की संभावना होती है क्योंकि पहली बार PS जब यह लॉन्च करने की कोशिश करता है तो वह आपके उपयोगकर्ता प्रोफ़ाइल स्क्रिप्ट को निष्पादित करता है जो आपके वातावरण को सेट करता है, हालांकि आप इसे पसंद करते हैं।
फ़ाइल आमतौर पर में स्थित है:
%UserProfile%\My Documents\WindowsPowerShell\Microsoft.PowerShellISE_profile.ps1
आप पॉवरशेल वैरिएबल चलाकर सटीक स्थान पा सकते हैं
$profile
यदि आपके प्रोफ़ाइल में कुछ भी नहीं है, और आप अपनी सुरक्षा सेटिंग्स के साथ उपद्रव नहीं करना चाहते हैं, तो आप इसे हटा सकते हैं और पावरशेल को ऐसा कुछ भी नहीं मिलेगा जिसे वह निष्पादित नहीं कर सकता है।