मेरी PowerShell स्क्रिप्ट क्यों नहीं चल रही हैं?


103

मैंने एक साधारण बैच फ़ाइल को PowerShell स्क्रिप्ट के रूप में लिखा था, और जब वे चलते हैं तो मुझे त्रुटियाँ मिल रही हैं।

यह मेरे पथ में एक स्क्रिप्ट निर्देशिका में है। यह मुझे मिलने वाली त्रुटि है:

लोड नहीं किया जा सकता क्योंकि स्क्रिप्ट का निष्पादन इस सिस्टम पर अक्षम है। कृपया "गेट-हेल्प-अबाउट-साइनिंग" देखें।

मैंने मदद में देखा, लेकिन यह मददगार से कम है।

जवाबों:


102

यह PowerShell का डिफ़ॉल्ट सुरक्षा स्तर हो सकता है, जो (IIRC) केवल हस्ताक्षरित स्क्रिप्ट चलाएगा।

इसे टाइप करने का प्रयास करें:

set-executionpolicy remotesigned

यह PowerShell को स्थानीय (जो कि स्थानीय ड्राइव पर) अहस्ताक्षरित स्क्रिप्ट चलाने की अनुमति देगा।

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


5
आपको कम से कम विंडोज 8 के तहत प्रशासक विशेषाधिकारों के साथ पॉवर्सशेल चलाना होगा!
ComFreek

1
और आपको विंडोज 7 के साथ ही प्रशासनिक विशेषाधिकार के साथ पॉवरशेल स्क्रिप्ट को चलाना होगा।
रॉड

14
यह काफी भयानक जवाब है। एक के लिए, यह संभवतः अवांछनीय (और असुरक्षित) तरीकों से पॉवरशेल के डिफ़ॉल्ट सुरक्षा स्तर को स्थायी रूप से बदल देता है। लेकिन - दूसरे के लिए, तो यह और भी पर्याप्त रूप से समझाने के लिए कि दूरदराज के स्क्रिप्ट और अहस्ताक्षरित स्थानीय स्क्रिप्ट पर हस्ताक्षर किए विफल रहता है नहीं अहस्ताक्षरित दूरस्थ स्क्रिप्ट है, जो Chocolatey कभी कभी की आवश्यकता है - निष्पादन विशेषाधिकार दिए जाते हैं। अधिकांश उपयोगकर्ताओं को शायद चाहते हैं यह और इस के बजाय।
सेसिल करी

1
जबकि उत्तर में कुछ कमजोरियों पर सेसिल की चिंता उचित है, मैं कुछ चीजों को इंगित करना चाहता था। 1) उसके दो लिंक मेरे लिए एक ही पृष्ठ खोलने के लिए दिखाई देते हैं। 2) यदि आप स्क्रिप्ट को बस चलाना चाहते हैं, तो निष्पादन नीति निर्धारित करना संभवतः अभी भी जाने का तरीका है, और संभवतः ओपी: 3 से असंबंधित है) ऐसा लगता है कि स्टार्टअप स्क्रिप्ट के लिए सबसे अच्छी नीति है, निष्पादन नीति और कमांड लाइन में गुंजाइश निर्दिष्ट करें स्क्रिप्ट को चलाना, और लॉगऑन के लिए सत्र विन्यास को आवश्यकतानुसार सेट करना। यदि आप Windows सत्र के दौरान उच्च सुरक्षा चाहते हैं, लेकिन लॉगऑन के लिए कम है, तो आप अपने स्क्रिप्ट क्रम में बारीकियों को प्राप्त करना चाहते हैं।
omJohn8372

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

79

आपको चलाने की आवश्यकता है Set-ExecutionPolicy:

Set-ExecutionPolicy Restricted <-- Will not allow any powershell scripts to run.  Only individual commands may be run.

Set-ExecutionPolicy AllSigned <-- Will allow signed powershell scripts to run.

Set-ExecutionPolicy RemoteSigned <-- Allows unsigned local script and signed remote powershell scripts to run.

Set-ExecutionPolicy Unrestricted <-- Will allow unsigned powershell scripts to run.  Warns before running downloaded scripts.

Set-ExecutionPolicy Bypass <-- Nothing is blocked and there are no warnings or prompts.

3
Windows के लिए एक नया इंस्टॉलेशन सेट करने पर डिफ़ॉल्ट एक्सेपोजिशनपॉलिशियल वैल्यू क्या है?
मैथ्यू लॉक

5
@MatthewLock Restrictedडिफ़ॉल्ट पॉलिसी है। और पढ़ें
नदीम_मेक

24

उपयोग:

Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process

वर्तमान सत्र में PowerShell को निष्पादित करने में सक्षम करने के लिए हमेशा उपरोक्त कमांड का उपयोग करें।


this + superuser.com/questions/612409/… + shorcut लिंक = पूर्णता
Q20

16

मैं इस तरह से PowerShell को लागू करके इस त्रुटि को बायपास करने में सक्षम था:

powershell -executionpolicy bypass -File .\MYSCRIPT.ps1

यही है, मैंने -executionpolicy bypassस्क्रिप्ट को लागू करने के तरीके में जोड़ा ।

यह विंडोज 7 सर्विस पैक 1 पर काम करता है। मैं पॉवरशेल के लिए नया हूं, इसलिए ऐसा करने के लिए कैवियट हो सकता है कि मुझे जानकारी नहीं है।

[संपादित करें 2017-06-26] मैंने बिना किसी समस्या के विंडोज 10 और विंडोज 2012 आर 2 सहित अन्य प्रणालियों पर इस तकनीक का उपयोग करना जारी रखा है।

यहाँ अब मैं उपयोग कर रहा हूँ। यह मुझे गलती से स्क्रिप्ट पर क्लिक करने से चलाता है। जब मैं इसे अनुसूचक में चलाता हूं तो मैं एक तर्क जोड़ता हूं: "अनुसूचक" और वह संकेत को दरकिनार कर देता है।

यह भी विंडो को अंत में रोक देता है ताकि मैं PowerShell का आउटपुट देख सकूं।

if NOT "%1" == "scheduler" (
   @echo looks like you started the script by clicking on it.
   @echo press space to continue or control C to exit.
   pause
)

C:
cd \Scripts

powershell -executionpolicy bypass -File .\rundps.ps1

set psexitcode=%errorlevel%

if NOT "%1" == "scheduler" (
   @echo Powershell finished.  Press space to exit.
   pause
)

exit /b %psexitcode%

इस चॉकलेट को डाउनलोड करने और इंस्टॉल करने के लिए चॉकलेट का उपयोग होता है
icc97

मैंने कमांड सेट-एक्सक्लूसिवपुलिस बाईपास को चलाने की कोशिश की -फाइल सी: \ Users \ david \ Desktop \ test.ps1 और एक त्रुटि संदेश मिला। इस आदेश के लिए कोई विकल्प नहीं है।
डेविड स्पेक्टर

ओह मैं समझा। आपको कमांड शक्तियां -executionpolicy बायपास युक्त शॉर्टकट बनाना होगा -File C: \ Users \ david \ Desktop \ test.ps1। कमांड टेस्ट .ps1 तब भी चलाया जाता है, जब सुरक्षित वैश्विक कमांड सेट-एक्ज़ीक्यूशन Policy Restricted दिया गया हो। मुझे उम्मीद है कि यह बुनियादी जानकारी किसी की मदद करती है।
डेविड स्पेक्टर

5
Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process

उपरोक्त त्रुटि होने पर भी उपरोक्त कमांड ने मेरे लिए काम किया:

Access to the registry key 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell' is denied.

5

यह भी जानने योग्य है कि आपको .\स्क्रिप्ट नाम के सामने शामिल करने की आवश्यकता हो सकती है । उदाहरण के लिए:

.\scriptname.ps1

1

कमांड set-executionpolicy unrestrictedआपके द्वारा लॉग की गई किसी भी स्क्रिप्ट को उपयोगकर्ता के रूप में चलाने की अनुमति देगा। बस set-executionpolicy signedलॉग आउट करने से पहले कमांड का उपयोग करके साइन इन करने के लिए निष्पादन योग्य सेटिंग वापस सेट करना सुनिश्चित करें ।


set-executionpolicy signedCannot bind parameter 'ExecutionPolicy'आदि देता है
जिंसावे

0

विंडोज 10 पर: myfile.ps1 की चेंज सिक्योरिटी प्रॉपर्टी पर क्लिक करें और myfile.ps1 पर राइट क्लिक / प्रॉपर्टीज़ द्वारा "एक्सेस की अनुमति दें" बदलें।

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