PowerShell का कहना है "स्क्रिप्ट का निष्पादन इस प्रणाली पर अक्षम है।"


1760

मैं एक चलाने की कोशिश कर रहा हूँ फ़ाइल जो कॉल करती है a स्क्रिप्ट से cmd.exe, और मुझे नीचे त्रुटि मिल रही है:

Management_Install.ps1 लोड नहीं किया जा सकता क्योंकि स्क्रिप्ट का निष्पादन इस सिस्टम पर अक्षम है।

मै भाग चुका

Set-ExecutionPolicy -ExecutionPolicy Unrestricted

और जब मैं चलाने Get-ExecutionPolicyसे, मैं Unrestrictedवापस आ गया।

PS C:\Users\Administrator\> Get-ExecutionPolicy
Unrestricted

C:\Projects\Microsoft.Practices.ESB\Source\Samples\Management Portal\Install\Scripts\> powershell .\Management_Install.ps1 1

WARNING: Running x86 PowerShell...

फ़ाइल C:\Projects\Microsoft.Practices.ESB\Source\Samples\Management Portal\Install\Scripts\Management_Install.ps1लोड नहीं की जा सकती क्योंकि स्क्रिप्ट का निष्पादन इस सिस्टम पर अक्षम है। कृपया get-help about_signingअधिक जानकारी के लिए " " देखें।

लाइन में: 1 चार: 25

  • .\Management_Install.ps1 <<<< १

    • श्रेणीइन्फो: अधिसूचित: (:) [], PSSecurityException

    • फुल्लीक्यूलाइज़्डइरॉयर आई डी: रनटाइम एक्ससेप्शन

C:\Projects\Microsoft.Practices.ESB\Source\Samples\Management Portal\Install\Scripts\> PAUSE

Press any key to continue . . .

सिस्टम विंडोज सर्वर 2008R2 है।

मैं क्या गलत कर रहा हूं?


3
नहीं देखो दोस्त, मैं प्रशासक के रूप में लॉग इन हूँ और "प्रशासक" के रूप में एक रन भी किया और ऊपर जैसा परिणाम मिला ...
Conor

2
इसके तल पर गया, त्रुटि भ्रामक थी, समस्या मेरी शक्तियाँ लिपि में थी, धन्यवाद!
कॉनर

यह इंगित करने के लायक है कि निष्पादन नीति में कई स्कोप हैं, और अलग-अलग तरीकों से पावरशेल चलाने से आपको अलग-अलग नीतियां मिल सकती हैं। नीतियों की सूची देखने के लिए, दौड़ें Get-ExecutionPolicy -List
बेकन बिट्स

जवाबों:


2238

यदि आप Windows Server 2008 R2 का उपयोग कर रहे हैं तो PowerShell का एक x64 और x86 संस्करण है, जिसमें दोनों को अपनी निष्पादन नीतियां निर्धारित करनी होंगी। क्या आपने दोनों मेजबानों पर निष्पादन नीति निर्धारित की है?

एक प्रशासक के रूप में , आप इसे अपने PowerShell विंडो में टाइप करके निष्पादन नीति निर्धारित कर सकते हैं:

Set-ExecutionPolicy RemoteSigned

अधिक जानकारी के लिए, Set-ExecutionPolicy Cmdlet का उपयोग करना देखें ।

जब आप काम पूरा कर लेते हैं, तो आप पॉलिसी को उसके डिफ़ॉल्ट मान पर वापस सेट कर सकते हैं:

Set-ExecutionPolicy Restricted

141
Set-ExecutionPolicy Restrictedयदि आप अनुमतियाँ वापस लाना चाहते हैं, तो इसे पूर्ववत करने का तरीका प्रतीत होता है: Technet.microsoft.com/en-us/library/ee176961.aspx । अस्थायी बाईपास विधि @Jack Edmondsमुझे सुरक्षित लगती है:powershell -ExecutionPolicy ByPass -File script.ps1
शार्प नोव

33
अधिक सुरक्षित नीति के लिए, इसे वास्तविक उपयोगकर्ता के लिए स्कोप करें: Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
Nuno

Set-ExecutionPolicy RemoteSigned आपकी स्क्रिप्ट में पहली पंक्ति नहीं हो सकती है। यदि यह है, तो इसे हाइलाइट करें और अपनी शेष स्क्रिप्ट चलाने से पहले केवल चयनित चुनें।
ozzy432836

मुझे एसएफ साइट पर एक समान सवाल आया, "एसक्यूएल सर्वर के भीतर पॉवर्सशेल निष्पादन नीति" 10 अक्टूबर 14 को पूछा गया था। वहां के जवाबों Get-ExecutionPolicy -Listमें अलग-अलग स्कोप को देखने में मदद मिली। सीएमडी Get-ExecutionPolicyसभी स्कोप नहीं दिखाता है। Import-Module SQLPSअब काम कर रहा है । के रूप में बदल दिया नीतियों का पालन: {Undefined- Process,MachinePolicy,UserPolicy,}; {RemoteSigned- CurrentUser, LocalMachine}
SherlockSpreadsheets

यदि मैं ऐसा करता हूं, तो क्या परिवर्तन वर्तमान पावरशेल की अवधि के लिए रहता है? या यह उससे भी बड़ा है?
विलियम जोकस

709

-ExecutionPolicy BypassPowerShell को चलाकर आप इस नीति को किसी एकल फ़ाइल के लिए बायपास कर सकते हैं

powershell -ExecutionPolicy Bypass -File script.ps1

3
यदि आप एक गैर-व्यवस्थापक खाते पर हैं, तो यह वास्तव में भी उपयोगी है। मैंने %SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe -ExecutionPolicy ByPassअपने टास्कबार पर एक शॉर्टकट बनाया ।
zek19

3
ध्यान दें कि Microsoft तकनीक इसे "बाईपास" के रूप में स्टाइल करती है, न कि "बायपास"। देखें: Technet.microsoft.com/nl-nl/library/hh849812.aspx
जेली जार्ज

1
यह मेरे लिए काम नहीं करता है, मुझे उसी तरह की अनुमति मिलती है जैसे कि मैंने इसे सामान्य रूप से कहा था। एक .bat से एक ps1 को कॉल करके type script.ps1 | powershell -हालांकि काम नहीं करता है।
Some_Guy

8
एक्ज़ीक्यूशन पॉलिसी का उद्देश्य लोगों को डबल-क्लिक करने से रोकना है .ps1और गलती से कुछ ऐसा चल रहा है जिसका उन्हें कोई मतलब नहीं था। यह .batफाइलों के साथ होगा
कोलोब कैनियन

आप जवाब के लिए मेरा दिन बचाने के लिए धन्यवाद।
अर्पित पटेल

162

मेरे पास एक समान मुद्दा था और नोट किया कि विंडोज सर्वर 2012cmd पर डिफ़ॉल्ट , x 64 चला रहा था।

के लिए विंडोज 7 , विंडोज 8 , विंडोज 10 , Windows Server 2008 R2 या विंडोज सर्वर 2012 , के रूप में निम्नलिखित कमांड चलाने प्रशासक :

x86 (32 बिट)
ओपन C:\Windows\SysWOW64\cmd.exe
रन कमांडpowershell Set-ExecutionPolicy RemoteSigned

x64 (64 बिट)
ओपन C:\Windows\system32\cmd.exe
रन कमांडpowershell Set-ExecutionPolicy RemoteSigned

आप मोड का उपयोग करके देख सकते हैं

  • CMD में: echo %PROCESSOR_ARCHITECTURE%
  • शक्तियों में: [Environment]::Is64BitProcess

संदर्भ:
MSDN - विंडोज पॉवरशेल निष्पादन नीतियां
विंडोज - 32 बिट बनाम 64 बिट निर्देशिका विवरण


132

अधिकांश मौजूदा उत्तर कैसे समझाते हैं , लेकिन बहुत कम लोग क्यों समझाते हैं । और इससे पहले कि आप इंटरनेट पर अजनबियों से कोड निष्पादित करने के चारों ओर जाएं, विशेष रूप से कोड जो सुरक्षा उपायों को निष्क्रिय करता है, आपको ठीक से समझना चाहिए कि आप क्या कर रहे हैं। तो यहाँ इस समस्या पर थोड़ा और विस्तार है।

TechNet से निष्पादन नीतियों के बारे में पृष्ठ :

Windows PowerShell निष्पादन नीतियाँ आपको उन शर्तों को निर्धारित करने देती हैं जिनके तहत Windows PowerShell कॉन्फ़िगरेशन फ़ाइलों को लोड करता है और स्क्रिप्ट चलाता है।

PowerShell मूल बातें - निष्पादन नीति और कोड हस्ताक्षर द्वारा, के लाभ, जो हैं:

  • निष्पादन का नियंत्रण - स्क्रिप्ट निष्पादित करने के लिए विश्वास के स्तर को नियंत्रित करें।
  • कमांड हाईजैक - मेरे रास्ते में कमांड के इंजेक्शन को रोकें।
  • पहचान - क्या ऐसी स्क्रिप्ट बनाई जाती है और जिस पर डेवलपर I ट्रस्ट और / या प्रमाण पत्र प्राधिकारी I ट्रस्ट से प्रमाणपत्र के साथ हस्ताक्षरित है।
  • अखंडता - लिपियों को मैलवेयर या दुर्भावनापूर्ण उपयोगकर्ता द्वारा संशोधित नहीं किया जा सकता है।

अपनी वर्तमान निष्पादन नीति की जांच करने के लिए, आप चला सकते हैं Get-ExecutionPolicy। लेकिन आप शायद यहाँ हैं क्योंकि आप इसे बदलना चाहते हैं।

ऐसा करने के लिए आप Set-ExecutionPolicycmdlet चलाएंगे ।

निष्पादन नीति को अपडेट करते समय आपके पास दो प्रमुख निर्णय होंगे।

निष्पादन नीति प्रकार:

  • RestrictedEither - सिस्टम पर कोई स्क्रिप्ट स्थानीय, रिमोट या डाउनलोड नहीं की जा सकती है।
  • 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

यदि आपके प्रोफ़ाइल में कुछ भी नहीं है, और आप अपनी सुरक्षा सेटिंग्स के साथ उपद्रव नहीं करना चाहते हैं, तो आप इसे हटा सकते हैं और पावरशेल को ऐसा कुछ भी नहीं मिलेगा जिसे वह निष्पादित नहीं कर सकता है।


8
मुझे लगता है कि यह ध्यान रखना महत्वपूर्ण है कि निष्पादन नीति एक सुरक्षा उपाय है, यह ऐसा नहीं है जो उपयोगकर्ताओं को PowerShell कोड को निष्पादित करने से रोकने के लिए है। निष्पादन नीति एक ऐसी चीज है जिसका उद्देश्य आपकी लिपियों की रक्षा करना है और यह निर्धारित करना है कि किसने लिखा, संशोधित या अनुमोदित किया है और यह सब। यह कुछ के साथ निष्पादन नीति के रूप में सरल के रूप में प्राप्त करने के लिए तुच्छ है Get-Content .\MyFile.ps1 | powershell.exe -NoProfile -
बेकन बिट्स 12

1
-ExecutionPolicy ByPassहालांकि, इस अस्तित्व को देखते हुए , इस नीति का उद्देश्य क्या है? क्या यह केवल उपयोगकर्ताओं को गलती से एक पॉवरशेल कंसोल को खोलने और दुर्भावनापूर्ण स्क्रिप्ट को चलाने से रोकने के लिए है? क्या हमलावर सिर्फ एक निष्पादन योग्य या बैच स्क्रिप्ट का उपयोग नहीं कर सकते हैं यदि वे इसके आसपास प्राप्त करना चाहते हैं? @BaconBits टिप्पणी पढ़ने के बाद भी मुझे यकीन नहीं है कि यह नीति किस परिदृश्य को रोकने के लिए है ...
Ajedi32

2
@ Ajedi32 कहो मेरे पास एक कार्य है जो एक नेटवर्क शेयर पर एक स्क्रिप्ट चलाता है। जब मैं अपनी स्क्रिप्ट का आह्वान करता हूं, तो मैं चाहता हूं कि मेरी प्रक्रिया यह सत्यापित करे कि स्क्रिप्ट पर हस्ताक्षर किए गए हैं। मैं चाहता हूं कि मेरा कोड यह जांचें कि मैं जिस स्क्रिप्ट को चलाने जा रहा हूं वह वह कोड है जिस पर मुझे भरोसा है। मुझे परवाह नहीं है अगर आप मेरा कोड चला सकते हैं। रोकना है कि अधिकारों का काम है। मैं सिर्फ आपको रन कोड बनाने से रोकना चाहता हूं जो मैंने नहीं लिखा था। प्रवेश अधिकार का अर्थ है कि जब आप लॉग ऑन होते हैं तो ऑपरेटिंग सिस्टम आपको मेरा कोड संशोधित करने से रोकता है। कोड हस्ताक्षर और निष्पादन नीति का मतलब है कि जब मैं इसे चलाने के लिए जाता हूं तो मेरी स्क्रिप्ट को संशोधित नहीं किया गया है।
बेकन बिट्स

40

विंडोज 7 में:

प्रारंभ मेनू पर जाएं और "विंडोज पॉवरशेल आईएसई" खोजें।

X86 संस्करण पर राइट क्लिक करें और "व्यवस्थापक के रूप में चलाएँ" चुनें।

शीर्ष भाग में, पेस्ट करें Set-ExecutionPolicy RemoteSigned; स्क्रिप्ट चलाएँ। "हाँ" चुनें।

Powershell ISE के 64-बिट संस्करण (गैर x86 संस्करण) के लिए इन चरणों को दोहराएं।

मैं सिर्फ उन चरणों को स्पष्ट कर रहा हूं जो @Chad मिलर ने संकेत दिए थे। धन्यवाद चाड!


39

स्क्रिप्ट से पहले इस कमांड को चलाने से भी समस्या हल होती है:

set-executionpolicy unrestricted

27
-1 - कम से कम अनुमति के सिद्धांत का पालन करें। कम से कम RemoteSignedअपनी सुरक्षा नीति पर सभी प्रतिबंधों को हटाने से पहले नीति निर्धारित करें । यदि वह काम नहीं करता है, तो फिर से आकलन करें कि आपके दर्द बिंदु क्या हैं और यह काम क्यों नहीं कर रहा है। आप unrestrictedअंतिम उपाय के रूप में सेट कर सकते हैं , लेकिन यह आपका शुरुआती बिंदु नहीं होना चाहिए।
काइलमिट

3
इस विकल्प को इंगित करने के लिए भी धन्यवाद। उत्पादन उद्देश्यों के लिए सुरक्षा की जरूरतों के लिए सभी सम्मान के साथ, ऐसे समय में जब त्वरित प्रोटोटाइप क्षमता की मांग इतनी अधिक है, सभी नीतियां और सुरक्षा वास्तव में सामान प्राप्त करने के रास्ते में आती हैं।
तिश्मा

1
पुन: प्रोटोटाइप के बारे में, मुझे डर है कि इसी वजह से भद्दा कोड प्रोडक्शन में आ जाता है। बेशक यह सिर्फ एक तुच्छ उदाहरण है, लेकिन यदि आप विकास के दौरान इस तुच्छ चीज़ को हल नहीं कर सकते हैं, तो यह रिलीज के लिए चिंता का विषय है। इसके अलावा, बीस्पोक कोड के लिए, और यदि आप कर सकते हैं, तो लक्ष्य वातावरण को जानें - हम अपने आंतरिक सिस्टम के अधिकांश भाग को सेट करते हैं Remotesigned
त्रिक

33

यदि आप एक ऐसे वातावरण में हैं जहाँ आप एक व्यवस्थापक नहीं हैं, तो आप केवल आपके लिए निष्पादन नीति निर्धारित कर सकते हैं, और इसके लिए व्यवस्थापक की आवश्यकता नहीं होगी।

Set-ExecutionPolicy -Scope "CurrentUser" -ExecutionPolicy "RemoteSigned"

या

Set-ExecutionPolicy -Scope "CurrentUser" -ExecutionPolicy "Unrestricted"

आप इसके बारे में मदद प्रविष्टि में पढ़ सकते हैं।

Help Get-ExecutionPolicy -Full
Help Set-ExecutionPolicy -Full

विंडोज 8 में मेरे लिए बहुत अच्छा काम किया, यहां तक ​​कि जब Set-ExecutionPolicy Unrestrictedएक व्यवस्थापक वास्तव में मदद करने के लिए पर्याप्त "अप्रतिबंधित" नहीं लगता था।
पेट्री

1
मेरा मानना ​​है कि आप जो अनुभव कर रहे हैं, वह GPO है या कुछ और "लोकल माचिन" एक्ज़ेक्यूशनपॉलिशी के स्तर की अपनी सेटिंग को ओवरराइट कर रहा है। आप यह निर्धारित नहीं कर सकते हैं कि सेट-एक्ज़ीक्यूशनपॉलिशी कमांड के साथ एक डोमेन पॉलिसी क्या है। हालाँकि, लेकिन "CurrentUser" पहुँच के स्तर को निर्धारित करते हुए, आपके और केवल आपके पास निर्दिष्ट निष्पादन नीति होगी। इसका कारण यह है कि कंप्यूटर CurrentMser को निष्पादन नीति के लिए देखता है इससे पहले कि वह LocalMachine सेटिंग को देखता है।
मीका 'पॉवरशेल निन्जा'

1
सेट-एक्ज़ीक्यूशन Policy -Scope "CurrentUser" -ExecutionPolicy "अप्रतिबंधित" एकमात्र समाधान है जो मेरे लिए काम करता है। धन्यवाद
Paulj

32

रिमोटसाइनड: आपके द्वारा बनाई गई सभी स्क्रिप्ट्स को चलाया जाएगा, और इंटरनेट से डाउनलोड की गई सभी लिपियों पर एक विश्वसनीय प्रकाशक द्वारा हस्ताक्षर किए जाने की आवश्यकता होगी।

ठीक है, बस टाइप करके पॉलिसी बदलें:

Set-ExecutionPolicy RemoteSigned

जैसा कि अन्य पोस्टों में सुझाया गया है: यह अधिक सुरक्षित नीति के लिए "-Scope CurrentUser" को शामिल करना बुद्धिमान है, जब यह समझ में आता है।
क्लेड्यूड

32

हम ExecutionPolicyनीचे दिए गए आदेश द्वारा वर्तमान की स्थिति प्राप्त कर सकते हैं :

Get-ExecutionPolicy;

डिफ़ॉल्ट रूप से यह प्रतिबंधित है । PowerShell लिपियों के निष्पादन की अनुमति देने के लिए हमें इस ExecutionPolicy को या तो बायपास या अप्रतिबंधित के रूप में सेट करने की आवश्यकता है ।

हम वर्तमान उपयोगकर्ता के लिए Bypassया Unrestrictedनीचे दिए गए PowerShell कमांड में से किसी का उपयोग करके नीति सेट कर सकते हैं :

Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Bypass -Force;

Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Unrestricted -Force;

अप्रतिबंधित नीति सभी कॉन्फ़िगरेशन फ़ाइलों को लोड करती है और सभी लिपियों को चलाती है। यदि आप एक बिना स्क्रिप्ट वाली स्क्रिप्ट चलाते हैं, जिसे इंटरनेट से डाउनलोड किया गया था, तो आपको चलने से पहले अनुमति के लिए संकेत दिया जाता है।

जबकि बायपास नीति में, कुछ भी अवरुद्ध नहीं है और स्क्रिप्ट निष्पादन के दौरान कोई चेतावनी या संकेत नहीं हैं। बाईपास ExecutionPolicyकी तुलना में अधिक आराम है Unrestricted


4
Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Bypass -Force; AKA त्वरित और गंदे तरीके से VS2015 को शिकायत को रोकने और मेरी खूनी स्क्रिप्ट को चलाने के लिए कहता है। धन्यवाद। जीवन रक्षक की।
Eon

1
आपके आदेशों के सिरों पर अनुगामी अर्धवृत्त सुपरफ़्लस हैं।
Bill_Stewart 21

23

मैं विंडोज 10 का उपयोग कर रहा हूं और किसी भी कमांड को चलाने में असमर्थ था। एकमात्र आदेश जिसने मुझे कुछ सुराग दिए:

[64]

  1. ओपन सी: \ Windows \ SysWOW64 \ cmd.exe [व्यवस्थापक के रूप में]
  2. आदेश चलाएँ> शक्तियां सेट-निष्पादनपोषी अप्रतिबंधित

लेकिन यह काम नहीं किया। यह सीमित था। विंडोज 10 के लिए संभवतः नई सुरक्षा नीतियां। मेरी यह त्रुटि थी:

Set-ExecutionPolicy: Windows PowerShell ने आपकी निष्पादन नीति को सफलतापूर्वक अपडेट कर दिया है, लेकिन सेटिंग अधिक विशिष्ट दायरे में परिभाषित नीति द्वारा ओवरराइड की जाती है। ओवरराइड के कारण, आपका शेल अपनी वर्तमान प्रभावी निष्पादन नीति को बनाए रखेगा ...

इसलिए मुझे एक और तरीका मिला ( समाधान ):

  1. ओपन रन कमांड / कंसोल ( Win+ R)
  2. प्रकार: gpedit.msc ( समूह नीति संपादक)
  3. स्थानीय कंप्यूटर नीति में ब्राउज़ करें -> कंप्यूटर कॉन्फ़िगरेशन -> प्रशासनिक टेम्पलेट -> विंडोज घटक -> विंडोज पॉवर्सशेल
  4. सक्षम करें " स्क्रिप्ट निष्पादन चालू करें "
  5. आवश्यकतानुसार नीति निर्धारित करें। मैंने " सभी स्क्रिप्ट की अनुमति दें " के लिए मुझे सेट किया ।

अब PowerShell खोलें और आनंद लें;)


क्या यह स्टैंड-अलोन इंस्टॉलेशन है, या आप किसी कार्यसमूह या डोमेन से जुड़े हैं?
मेमोरियल

इसे करने के लिए cmd क्यों खोलें? बस ISE खोलें (व्यवस्थापक के रूप में) और टाइप करेंSet-ExecutionPolicy RemoteSigned
Kolob Canyon

OMG ने आखिरकार मेरे win10 बॉक्स को ठीक कर दिया, @kolob सेट-
एक्ज़ीकंपोलिसी

आपको उपयोग नहीं करना चाहिए Unrestricted। उपयोग करने के लिए बेहतर अभ्यास हैRemoteSigned
कोलोब कैन्यन

@ xer0x तब तक होना चाहिए जब तक आप एक प्रशासक के रूप में शक्तियां चलाते हैं
Kolob Canyon

10

निष्पादन नीति निर्धारित करना पर्यावरण-विशिष्ट है। यदि आप चल रहे x86 ISE से स्क्रिप्ट निष्पादित करने का प्रयास कर रहे हैं, तो आपको निष्पादन नीति को सेट करने के लिए x86 PowerShell का उपयोग करना होगा। इसी तरह, यदि आप 64-बिट ISE चला रहे हैं तो आपको 64-बिट पॉवरशेल के साथ पॉलिसी सेट करनी होगी।


10

Win+ Rऔर कॉपी पेस्ट कमांड टाइप करें और दबाएँ OK:

powershell Set-ExecutionPolicy -Scope "CurrentUser" -ExecutionPolicy "RemoteSigned"

और अपनी स्क्रिप्ट निष्पादित करें।

फिर परिवर्तन की तरह वापस:

powershell Set-ExecutionPolicy -Scope "CurrentUser" -ExecutionPolicy "AllSigned"

10

आप निम्न आदेश का उपयोग करके इसे भी बायपास कर सकते हैं:

PS > powershell Get-Content .\test.ps1 | Invoke-Expression

आप स्कॉट सदरलैंड के इस लेख को भी पढ़ सकते हैं जो कि Set-ExecutionPolicyआपके पास व्यवस्थापक विशेषाधिकार नहीं होने पर PowerShell को बायपास करने के 15 अलग-अलग तरीके बताते हैं :

पॉवरशेल एक्जिक्यूशन पॉलिसी को बायपास करने के 15 तरीके


यह संभवतः इस प्रतिबंध के निवारण और समझने के लिए अधिक सम्मोहक मार्गदर्शकों में से एक है।
ओस्वाल्डो मर्काडो

5
  1. व्यवस्थापक के रूप में PowerShell खोलें और Set-ExecutionPolicy -Scope CurrentUser चलाएं
  2. RemoteSign प्रदान करें और Enter दबाएँ
  3. सेट-एक्ज़ीक्यूशन पॉलीसी -स्कॉप करेंटयूसर चलाएं
  4. अप्रतिबंधित प्रदान करें और Enter दबाएं

5

आप यह कोशिश कर सकते हैं और "ऑल" विकल्प का चयन कर सकते हैं

Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned

3

PowerShell ISE संपादक में मैंने पाया कि निम्न पंक्ति पहले स्क्रिप्ट की अनुमति थी।

Set-ExecutionPolicy RemoteSigned -Scope Process

2

PowerShell 2.0 में, निष्पादन नीति डिफ़ॉल्ट रूप से अक्षम कर दी गई थी।

तब से, PowerShell टीम ने बहुत सुधार किए हैं, और उन्हें विश्वास है कि उपयोगकर्ता स्क्रिप्ट चलाते समय बहुत कुछ नहीं तोड़ेंगे। तो PowerShell 4.0 आगे से, यह डिफ़ॉल्ट रूप से सक्षम है।

अपने मामले में, Set-ExecutionPolicy RemoteSignedPowerShell कंसोल से टाइप करें और हां कहें।


2

मुझे आज भी यही समस्या थी। 64-बिट निष्पादन नीति अप्रतिबंधित थी, जबकि 32-बिट प्रतिबंधित थी।

यहाँ केवल 32-बिट नीति को दूरस्थ रूप से बदलने का तरीका बताया गया है:

Invoke-Command -ComputerName $servername -ConfigurationName Microsoft.PowerShell32 -scriptblock {Set-ExecutionPolicy unrestricted}

2

रजिस्ट्री पथ पर जाएं HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShellऔर सेट ExecutionPolicyकरें RemoteSigned


1
1. प्रशासक के रूप में खुला PowerShell और चलाने के सेट ExecutionPolicy -Scope CurrentUser 2. प्रदान करें RemoteSigned और Enter दबाएं 3. भागो सेट ExecutionPolicy -Scope CurrentUser 4. प्रदान करें अप्रतिबंधित और Enter दबाएं
रामानुजम आलम

2

जब मैं दौड़ने की कोशिश करता हूं तो मुझे एक और चेतावनी मिलती है Set-ExecutionPolicy RemoteSigned

मैंने इस आदेश के साथ हल किया

Set-ExecutionPolicy "RemoteSigned" -Scope Process -Confirm:$false

Set-ExecutionPolicy "RemoteSigned" -Scope CurrentUser -Confirm:$false

1

यदि आप रूबी या बावर्ची के साथ इसे चलाने और `` सिस्टम निष्पादन का उपयोग कर रहे हैं, तो निम्नानुसार निष्पादित करें:

`powershell.exe -ExecutionPolicy Unrestricted -command [Environment]::GetFolderPath(\'mydocuments\')`

वह आदेश "MyDocuments" फ़ोल्डर प्राप्त करने के लिए है।

-ExecutionPolicy Unrestricted उसने चाल चली।

मुझे आशा है कि यह किसी और के लिए उपयोगी है।


क्या `` वास्तव में होना चाहिए?
पीटर मोर्टेंसन

1

कई जवाब निष्पादन नीति की ओर इशारा करते हैं। हालाँकि कुछ चीजों के लिए "रनस एडमिनिस्ट्रेटर" की भी आवश्यकता होती है। यह सबसे सुरक्षित है कि निष्पादन नीति में कोई स्थायी परिवर्तन नहीं है, और पिछले व्यवस्थापक प्रतिबंध प्राप्त कर सकते हैं। के साथ एक बैच शुरू करने के लिए अनुसूची के साथ प्रयोग करें:

    runas.exe /savecred /user:administrator powershell -ExecutionPolicy ByPass -File script.ps1

दोनों जैक एडमंड्स ऊपर से, और पीटर मोर्टेंसन / धना पोस्ट के कमांड प्रॉम्प्ट से "एडमिनिस्ट्रेटर के रूप में रन" के रूप में एक आवेदन कैसे चलाएं?


1

मैंने पाया कि यह पंक्ति मेरे विंडोज सर्वर 2008 R2 सर्वरों में से एक के लिए सबसे अच्छा काम करती है। मेरी PowerShell स्क्रिप्ट में कुछ अन्य लोगों के पास इस पंक्ति के बिना कोई समस्या नहीं थी:

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Force -Scope Process

1

एक व्यवस्थापक के रूप में पॉवर्सशेल कंसोल खोलें, और फिर निष्पादन नीति सेट करें

Set-ExecutionPolicy -ExecutionPolicy Remotesigned 

0

आप इसे बायपास करने के लिए एक विशेष तरीके का उपयोग कर सकते हैं:

Get-Content "PS1scriptfullpath.ps1" | Powershell-NoProfile -

यह पॉवरशेल स्क्रिप्ट की सामग्री को शक्तिके। Exe में पाइप करता है और निष्पादन नीति को दरकिनार कर इसे निष्पादित करता है।


0

इससे मेरी समस्या हल हो गई

विंडोज PowerShellकमांड खोलें और क्वेरी को बदलने के लिए नीचे चलाएंExecutionPolicy

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

अगर यह पुष्टिकरण परिवर्तन 'Y' और हिट दर्ज करने के लिए कहता है।



0
  1. प्रशासन के रूप में खुला अधिकार
Set-ExecutionPolicy -Scope "CurrentUser" -ExecutionPolicy "RemoteSigned"

इस कमांड का उपयोग करें



-2

एक व्यवस्थापक के रूप में PowerShell विंडो खोलें । यह काम करेगा।


यह काम नहीं किया। हालाँकि, पॉवरशेल सेट-एक्ज़ीक्यूशन Policy RemoteSign चलाने से काम चल गया।
थ्रोंक
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.