ไม่สามารถโหลด ps1 ได้เนื่องจากสคริปต์ที่รันถูกปิดใช้งานบนระบบนี้


120

ฉันพยายามเรียกใช้powershellสคริปต์จาก c #

ครั้งแรกที่ผมตั้งExecutionPolicyไปและสคริปต์ที่กำลังทำงานอยู่ในขณะนี้จากUnrestrictedPowerShell ISE

ตอนนี้นี่คือ c # รหัสของฉัน:

class Program
{
    private static PowerShell ps;
    static void Main(string[] args)
    {
        ps = PowerShell.Create();
        string ps1File = Path.Combine(Environment.CurrentDirectory, "script.ps1");
        ExecuteScript(ps1File);
        Console.ReadLine();
    }

    static void ExecuteScript(string script)
    {
        try
        {
            ps.AddScript(script);
            Collection<PSObject> results = ps.Invoke();
            Console.WriteLine("Output:");
            foreach (var psObject in results)
            {
                Console.WriteLine(psObject);
            }
            Console.WriteLine("Non-terminating errors:");
            foreach (ErrorRecord err in ps.Streams.Error)
            {
                Console.WriteLine(err.ToString());
            }
        }
        catch (RuntimeException ex)
        {
            Console.WriteLine("Terminating error:");
            Console.WriteLine(ex.Message);
        }
    }
}

และผลลัพธ์คือ:

ไม่สามารถโหลด ps1 ได้เนื่องจากสคริปต์ที่รันถูกปิดใช้งานบนระบบนี้ สำหรับข้อมูลเพิ่มเติม about_Execution_Policies informationm ดูที่ http://go.microsoft.com/fwlink/?LinkID=135170


1
คุณพยายามกำหนดขอบเขตนโยบายเป็น Local machine หรือไม่? 'Set-ExecutionPolicy -Scope LocalMachine -ExecutionPolicy ไม่ จำกัด '
Totem

6
เรียกใช้Get-ExecutionPolicy -Listและแก้ไขคำถามของคุณพร้อมผลลัพธ์ คำสั่งนี้จะแสดงขอบเขตที่แตกต่างกันและการตั้งค่า ExecutionPolicy
James C.

ดูเหมือนจะไม่ได้ผลฉันกลัว แต่เพื่อให้ชัดเจนว่านี่ไม่ได้อยู่ในระดับบรรทัดคำสั่งเนื่องจากฉันสามารถทำงานบนเดสก์ท็อประยะไกลได้โดยไม่มีปัญหา
yorkshireflatcap

คำตอบ:


372

ExecutionPolicyซึ่งอาจจะเป็นเพราะผู้ใช้ปัจจุบันมีไม่ได้กำหนด

คุณสามารถลองทำสิ่งต่อไปนี้:

Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Unrestricted

3
ได้ผล !! ขอบคุณ!
Rakhi Dhavale

2
ฉันมีปัญหากับ Parcel และฉันแก้ไขด้วยคำตอบของคุณขอบคุณ!
Ângelo Polotto

12
BTW สิ่งนี้ควรดำเนินการในPowershellไม่ใช่ cmd ของ windows
user218867

ขอบคุณมาก!! คนควรลองก่อน!
Fes Nguyen

3
@HDJEMAI ฉันเดาว่านี่ขึ้นอยู่กับบริบทที่คุณใช้งานอยู่ Unrestrictedหมายความว่าคุณสามารถเรียกใช้สคริปต์ทั้งหมดได้ อีกทางเลือกหนึ่งคือการตั้งค่านโยบายการดำเนินการRemoteSignedตามที่จะอนุญาตAllow local scripts and remote signed scriptsแต่ขึ้นอยู่กับแอปพลิเคชันและสิ่งที่กำลังทำอยู่อาจทำให้เกิดข้อผิดพลาดเดียวกันได้ ฉันคิดว่าแนวทางของคุณถูกต้องในแง่ของการรักษาความปลอดภัยและคุณสามารถอ่านนโยบายก่อนใช้งานGet-ExecutionPloicyได้เสมอ แม้ว่าสิ่งนี้จะบอกว่าขอบเขตเป็นผู้ใช้ปัจจุบันดังนั้นความเสี่ยงในความคิดของฉันจึงมีน้อย ฉันหวังว่านี่จะช่วยได้.
ทอม


25

เรียกใช้รหัสนี้ใน powershell หรือ cmd ของคุณ

Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass

1
ใช้งานได้กับภาษาอื่น ๆ (แก้ไขแอป Ionic ตอนนี้) ด้วย!
Chiwda

ทำงานให้ฉันเช่นกันวิ่งภายในเทอร์มินัลรหัส VIsual Studio เพื่อให้ typescript ทำงานโดยใช้คำสั่ง tsc
aonepathan

12

หากคุณใช้รหัส Visual Studio:

  1. เปิดเทอร์มินัล
  2. รันคำสั่ง: Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Unrestricted
  3. จากนั้นรันคำสั่ง protractor conf.js

สิ่งนี้เกี่ยวข้องกับการเรียกใช้สคริปต์ทดสอบไม้โปรแทรกเตอร์ที่เกี่ยวข้องและฉันประสบปัญหาเดียวกันและได้รับการแก้ไขเช่นนี้


7

สามขั้นตอนต่อไปนี้ใช้เพื่อแก้ไข Running Scripts ถูกปิดใช้งานบนข้อผิดพลาดของระบบนี้

ขั้นตอนที่ 1: ในการแก้ไขปัญหาประเภทนี้เราต้องเริ่มพาวเวอร์เชลล์ในโหมดผู้ดูแลระบบ

ขั้นตอนที่ 2: พิมพ์คำสั่งต่อไปนี้ set-ExecutionPolicy RemoteSigned ขั้นที่ 3: กด Y เพื่อยืนยันของคุณ

เยี่ยมชมข้อมูลต่อไปนี้https://youtu.be/J_596H-sWsk


4

นโยบายการดำเนินการของ PowerShell ถูกตั้งค่าเริ่มต้นเป็นแบบ จำกัด คุณสามารถเปลี่ยนนโยบายการดำเนินการ PowerShell ด้วย cmdlet Set-ExecutionPolicy เพื่อเรียกใช้นโยบายการตั้งค่าสคริปต์ภายนอกเป็น RemoteSigned

PS C:> Set-ExecutionPolicy RemoteSigned ด้านล่างนี้คือรายการนโยบายการดำเนินการที่แตกต่างกันสี่นโยบายใน PowerShell

ถูก จำกัด - ไม่สามารถเรียกใช้สคริปต์ได้ AllSigned - สามารถเรียกใช้สคริปต์ที่ลงนามโดยผู้เผยแพร่ที่เชื่อถือได้เท่านั้น RemoteSigned - สคริปต์ที่ดาวน์โหลดจะต้องลงนามโดยผู้เผยแพร่ที่เชื่อถือได้ ไม่ จำกัด - สคริปต์ Windows PowerShell ทั้งหมดสามารถรันได้


3

เปิด windows powershell ในโหมดผู้ดูแลระบบและเรียกใช้คำสั่งต่อไปนี้และการทำงานของ VOILA !!

ตั้งค่า ExecutionPolicy RemoteSigned


2

อีกวิธีหนึ่งคือลบ ng.ps1 ออกจากไดเร็กทอรี C: \ Users% username% \ AppData \ Roaming \ npm \ และการล้างแคช npm


1
ฉันมีข้อผิดพลาดเดียวกันกับโมดูล npm และนี่เป็นวิธีแก้ปัญหาที่ฉันชอบที่สุด หากคุณลบไฟล์. ps1 ออกก็จะใช้หนึ่งในอีกสองสคริปต์ (เช่น. cmd บน Windows อันที่ไม่มีนามสกุลเป็นอย่างอื่น) และคุณไม่จำเป็นต้องเปลี่ยนการกำหนดค่าความปลอดภัย
Giovanni P.

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.