Powershell เป็นงานอัตโนมัติและกรอบงานการจัดการที่พัฒนาและเผยแพร่โดย Microsoft ประกอบด้วยเชลล์บรรทัดคำสั่งและภาษาที่เกี่ยวข้อง ผู้ใช้สามารถรัน cmdlet จำนวนมากในโปรแกรม อย่างไรก็ตาม เมื่อไม่นานมานี้ มีรายงานจำนวนมากที่ผู้ใช้ไม่สามารถเรียกใช้สคริปต์และ “การเรียกใช้สคริปต์ถูกปิดใช้งานบนระบบนี้ ” หรือ “การทำงานของสคริปต์ถูกปิดการใช้งานในระบบนี้ ” ข้อผิดพลาดปรากฏขึ้นใน Powershell
ในบทความนี้ เราจะพูดถึงสาเหตุที่ทำให้เกิดข้อผิดพลาดนี้และวิธีแก้ไขที่ได้ผลเพื่อแก้ไขอย่างถาวร อย่าลืมทำตามขั้นตอนอย่างระมัดระวังและถูกต้องเพื่อหลีกเลี่ยงความขัดแย้ง
อะไรทำให้เกิดข้อผิดพลาด “เรียกใช้สคริปต์ถูกปิดใช้งานบนระบบนี้” ข้อผิดพลาด
หลังจากได้รับรายงานจำนวนมากจากผู้ใช้หลายคน เราจึงตัดสินใจตรวจสอบเรื่องนี้และการวิจัยของเราชี้ให้เห็นว่าข้อผิดพลาดเกิดจากปัญหาต่อไปนี้
- สคริปต์ที่ปิดใช้งาน: ทุกสคริปต์ที่คุณเรียกใช้บน Powershell ต้องมีการตรวจสอบระดับหนึ่งจากแหล่งที่เชื่อถือได้เพื่อให้สามารถทำงานได้ อย่างไรก็ตาม ในบางกรณี แม้ว่าสคริปต์จะมีการตรวจสอบ แต่ก็ยังคงหยุดการทำงานเนื่องจากการจำกัดการเข้าถึง ประเด็นคือ Windows มี "นโยบายการดำเนินการ" ที่สคริปต์จำเป็นต้องเลี่ยงผ่านเพื่อให้สามารถดำเนินการได้ หากกำหนดนโยบายการดำเนินการเป็น "จำกัด" สคริปต์จะไม่สามารถเรียกใช้บนคอมพิวเตอร์ได้
เมื่อคุณมีความเข้าใจพื้นฐานเกี่ยวกับธรรมชาติของปัญหาแล้ว เราจะดำเนินการแก้ไขต่อไป
แนวทางที่ 1:การเพิ่มโค้ด
หากคุณต้องการเรียกใช้สคริปต์เฉพาะบนคอมพิวเตอร์ของคุณโดยไม่ต้องเปลี่ยนนโยบายการดำเนินการให้ยุ่งยาก คุณสามารถเพิ่มโค้ดลงในคำสั่งได้เสมอ ซึ่งจะให้สิทธิ์การเข้าถึงสคริปต์ผ่านนโยบาย สำหรับสิ่งนั้น:
- กด “Windows ” + “อาร์ ” เพื่อเปิดพรอมต์การเรียกใช้
- พิมพ์ “Powershell ” และกด “Shift ” + “Ctrl ” + “ป้อน ” พร้อมกันเพื่อให้สิทธิ์การเข้าถึงระดับผู้ดูแลระบบ
- พิมพ์คำสั่งเพื่อรันสคริปต์เฉพาะเช่นคำสั่งต่อไปนี้
c:\> powershell -ExecutionPolicy ByPass -File script.ps1
- กด “เข้าสู่ ” และ ตรวจสอบ เพื่อดูว่าปัญหายังคงมีอยู่หรือไม่
แนวทางที่ 2:การเปลี่ยนแปลงนโยบายการดำเนินการ
เนื่องจากนโยบายการดำเนินการให้การเข้าถึง Powershell เพื่อเรียกใช้สคริปต์ใดสคริปต์หนึ่ง หากตั้งค่าเป็นจำกัด สคริปต์จะบล็อกไม่ให้เรียกใช้สคริปต์ทั้งหมด มีโหมดต่างๆ ที่คุณสามารถกำหนดนโยบายได้ขึ้นอยู่กับสถานการณ์ของคุณ โหมดเหล่านี้ได้แก่:
- จำกัด: โหมดนี้ไม่อนุญาตให้เรียกใช้สคริปต์ใดๆ ในคอมพิวเตอร์
- ลงนามทั้งหมด: โดยการเลือกโหมดนี้ เฉพาะนโยบายที่ลงนามโดยผู้เผยแพร่ที่เชื่อถือได้เท่านั้นที่สามารถเรียกใช้บนคอมพิวเตอร์ได้
- RemoteSigned: สคริปต์ที่ดาวน์โหลดทั้งหมดต้องลงนามโดยผู้เผยแพร่ที่เชื่อถือได้
- ไม่จำกัด: ไม่มีการจำกัดสคริปต์ใดๆ เลย
เมื่อคุณทราบระดับที่สามารถกำหนดนโยบายการดำเนินการได้แล้ว คุณสามารถเลือกระดับที่ดีที่สุดสำหรับคุณได้อย่างง่ายดายขึ้นอยู่กับความต้องการของคุณ เพื่อเปลี่ยนนโยบายการดำเนินการ:
- กด “Windows ” + “อาร์ ” เพื่อเปิดพรอมต์การเรียกใช้
- พิมพ์ "Powershell" แล้วกด "Shift ” + “Ctrl ” + “ป้อน ” พร้อมกันเพื่อให้สิทธิ์การเข้าถึงระดับผู้ดูแลระบบ
- พิมพ์คำสั่งต่อไปนี้แล้วกด "Enter" เพื่อดำเนินการ
Set-ExecutionPolicy Remotesigned
หมายเหตุ: คำว่า “RemoteSigned ” จะถูกแทนที่ด้วยระดับความปลอดภัยที่คุณต้องการตามที่ระบุไว้ข้างต้น
- กด “Y ” เพื่อระบุว่าใช่และสิ่งนี้จะเปลี่ยนนโยบายกลุ่มเป็นระดับที่ต้องการ
- ตรวจสอบ เพื่อดูว่าปัญหายังคงมีอยู่หรือไม่