PowerShell เป็นเฟรมเวิร์กสำหรับอัตโนมัติและจัดการงานที่พัฒนาโดย Microsoft ประกอบด้วย command-line shell และภาษาสคริปต์ ผู้ใช้สามารถรัน cmdlets ได้มากมาย แต่เมื่อเรานี้มีรายงานว่ารันสคริปต์ไม่ได้ แสดงข้อผิดพลาด Running Script is Disabled on this System หรือ execution of scripts is disabled on this system

บทความนี้จะอธิบายสาเหตุและวิธีแก้ไขอย่างถาวร โปรดทำตามขั้นตอนอย่างระมัดระวัง
สาเหตุของข้อผิดพลาด "Running Scripts is Disabled on this System"
จากการสำรวจพบว่าสาเหตุหลักคือ:
- สคริปต์ถูกปิดใช้งาน: ทุกสคริปต์ต้องผ่านการตรวจสอบจากแหล่งที่เชื่อถือได้ แต่ในบางกรณีแม้จะมีการตรวจสอบแล้ว ก็ยังถูกบล็อกเนื่องจากนโยบายการรัน (Execution Policy) ถูกตั้งค่าเป็น Restricted ทำให้ไม่มีสคริปต์ใดรันได้
เข้าใจสาเหตุแล้ว มาดูวิธีแก้ไขกัน
วิธีแก้ไข 1: เพิ่มโค้ดเพื่อข้ามนโยบาย
หากต้องการรันสคริปต์เฉพาะตัวโดยไม่เปลี่ยนนโยบายการรัน ให้เพิ่มพารามิเตอร์ในคำสั่ง
- กด Windows + R เปิด Run prompt
- พิมพ์ PowerShell แล้วกด Shift + Ctrl + Enter เพื่อเปิดด้วยสิทธิ์แอดมิน

- พิมพ์คำสั่งรันสคริปต์พร้อมพารามิเตอร์ bypass:
c:\> powershell -ExecutionPolicy ByPass -File script.ps1
- กด Enter และตรวจสอบว่าปัญหาแก้ไขหรือยัง
วิธีแก้ไข 2: เปลี่ยนนโยบายการรัน (Execution Policy)
นโยบายการรันควบคุมว่าสคริปต์ใดได้รับอนุญาตให้รัน มีระดับดังนี้:
- Restricted: ห้ามรันสคริปต์ทั้งหมด (ค่าเริ่มต้น)
- AllSigned: รันได้เฉพาะสคริปต์ที่ลงนามโดยผู้เผยแพร่ที่เชื่อถือได้
- RemoteSigned: สคริปต์ที่ดาวน์โหลดต้องมีลายเซ็นจากผู้เผยแพร่ที่เชื่อถือได้
- Unrestricted: ไม่มีข้อจำกัด ใส่สคริปต์ได้ทั้งหมด
เลือกระดับที่เหมาะสม แล้วเปลี่ยนนโยบาย:
- กด Windows + R เปิด Run prompt
- พิมพ์ PowerShell กด Shift + Ctrl + Enter เพื่อสิทธิ์แอดมิน

- พิมพ์คำสั่งและกด Enter:
Set-ExecutionPolicy RemoteSigned
หมายเหตุ: แทนคำว่า RemoteSigned ด้วยระดับที่ต้องการ (AllSigned, Unrestricted, ฯลฯ)
- กด Y เพื่อยืนยัน จะเปลี่ยน Group Policy เป็นระดับที่เลือก

- ตรวจสอบ ว่าปัญหาแก้ไขหรือยัง