แก้ไขการเรียกใช้สคริปต์ PowerShell ถูกปิดใช้งานบนระบบนี้

/th/images/Running-PowerShell-Scripts-is-Disabled-on-this-system_ftimg.png

หากคุณเคยพยายามเรียกใช้สคริปต์ PowerShell และเห็นข้อความ: การเรียกใช้สคริปต์ถูกปิดใช้งานบนระบบนี้ คุณไม่ได้อยู่คนเดียว ต้องบอกว่านี่คือหนึ่งในข้อผิดพลาด PowerShell ที่พบบ่อยที่สุด โดยเฉพาะสำหรับนักพัฒนา ผู้ดูแลระบบไอที และผู้เริ่มต้นที่พยายามเรียกใช้สคริปต์การตั้งค่า งานอัตโนมัติ หรือเครื่องมือในเครื่อง

เมื่อเร็วๆ นี้ ฉันพยายามเรียกใช้สคริปต์ PowerShell บนพีซี Windows 11 ของฉัน และฉันพบข้อผิดพลาด: ไม่สามารถโหลดสคริปต์ PowerShell ได้เนื่องจากการเรียกใช้สคริปต์ถูกปิดใช้งานบนระบบนี้ สำหรับข้อมูลเพิ่มเติม โปรดดู about_Execution_Policies ที่ https://go.microsoft.com/fwlink/?LinkID=135170

ข้อผิดพลาด “ การเรียกใช้สคริปต์ถูกปิดใช้งานบนระบบนี้ ” เกิดขึ้นเนื่องจากนโยบายการดำเนินการ PowerShell ปัจจุบันของคอมพิวเตอร์ของคุณถูกตั้งค่าเป็น ' จำกัด ' ซึ่งจะป้องกันไม่ให้ไฟล์สคริปต์ทำงาน การปรับเปลี่ยนนโยบายการดำเนินการ PowerShell จากจำกัดเป็น RemoteSigned หรือ Bypass ช่วยให้คุณสามารถเรียกใช้สคริปต์ได้สำเร็จ คุณสามารถทำได้ด้วยตนเองหรือใช้นโยบาย Intune หรือกลุ่มเพื่อกำหนดค่านโยบายการดำเนินการ PS บนอุปกรณ์ Windows ที่มีการจัดการ

/th/images/PatchMyPC-AppCatalog-725x250-1.jpg ติดตั้งและอัปเดตแอปพลิเคชันบุคคลที่สามด้วย Patch My PC /th/images/PowerShell-Script-cannot-be-loaded-because-running-scripts-is-disabled-on-this-system-1024x469.png ไม่สามารถโหลดสคริปต์ PowerShell ได้เนื่องจากการเรียกใช้สคริปต์ถูกปิดใช้งานบนระบบนี้

เหตุใด PowerShell จึงบล็อกสคริปต์บน Windows

PowerShell คือเครื่องมืออัตโนมัติและการเขียนสคริปต์ที่ทรงพลังซึ่งมีอยู่ใน Windows PowerShell มีคุณลักษณะด้านความปลอดภัยที่เรียกว่า Execution Policy ซึ่งโดยทั่วไปจะควบคุมว่าสคริปต์สามารถทำงานได้บนคอมพิวเตอร์ของคุณหรือไม่

ต่อไปนี้คือสาเหตุที่ถูกต้องบางประการที่ทำให้สคริปต์ PowerShell ถูกบล็อกไม่ให้ทำงานตามค่าเริ่มต้น โดยเฉพาะในระบบ Windows ที่มีการจัดการหรือถูกล็อค

  • ทำการเปลี่ยนแปลงระบบอัตโนมัติ เช่น การแก้ไขการตั้งค่า ค่าต่างๆ เป็นต้น
  • ติดตั้งซอฟต์แวร์หรือแอพพลิเคชั่น
  • แก้ไขไฟล์และการตั้งค่ารีจิสทรี
  • โต้ตอบกับเครือข่ายและบริการ

เคล็ดลับความปลอดภัยก่อนเรียกใช้สคริปต์ PowerShell

นโยบายการดำเนินการไม่ใช่ระบบรักษาความปลอดภัยที่จำกัดการกระทำของผู้ใช้ ช่วยลดความเสี่ยงจากอุบัติเหตุ และ Microsoft เองก็ถือว่ามันเป็นคุณลักษณะด้านความปลอดภัยมากกว่าการควบคุมความปลอดภัยที่เข้มงวด ต้องบอกว่าก่อนที่คุณจะเรียกใช้สคริปต์ PowerShell โปรดพิจารณาประเด็นเหล่านี้

  • อย่าเรียกใช้สคริปต์จากแหล่งที่ไม่รู้จัก
  • ตรวจสอบสคริปต์ก่อนดำเนินการ เปิดใน Notepad หรือ PS ISE แล้วทดสอบอย่างละเอียด
  • ต้องการ RemoteSigned มากกว่า Unrestricted เมื่อเป็นไปได้
  • ใช้นโยบายการดำเนินการบายพาสเมื่อจำเป็นเท่านั้น

แก้ไขสคริปต์การรันถูกปิดใช้งานบนระบบนี้

หากต้องการแก้ไขข้อผิดพลาด “การเรียกใช้สคริปต์ถูกปิดใช้งานบนระบบนี้” บนคอมพิวเตอร์ Windows ของคุณ ให้ทำตามขั้นตอนเหล่านี้

ขั้นตอนที่ 1: ตรวจสอบนโยบายการดำเนินการ PowerShell ปัจจุบัน

ขั้นแรก ให้ตรวจสอบนโยบายการดำเนินการสำหรับเซสชัน PowerShell ปัจจุบันโดยใช้ Get-ExecutionPolicy cmdlet เรียกใช้คำสั่งต่อไปนี้ใน PowerShell เพื่อรับนโยบายการดำเนินการสคริปต์:


Get-ExecutionPolicy

คัดลอก


Get-ExecutionPolicy

หากต้องการรับนโยบายการดำเนินการที่ตั้งค่าไว้สำหรับผู้ใช้ปัจจุบัน ให้รันคำสั่งด้านล่างซึ่งใช้พารามิเตอร์ขอบเขตของ Get-ExecutionPolicy


Get-ExecutionPolicy -Scope CurrentUser

คัดลอก


Get-ExecutionPolicy



-



Scope CurrentUser

หลังจากรันคำสั่งข้างต้น เราจะเห็นว่านโยบายการดำเนินการปัจจุบันถูกตั้งค่าเป็นจำกัด มุ่งหน้าไปยังขั้นตอนถัดไปเพื่อแก้ไขนโยบายการดำเนินการ

/th/images/Check-the-Current-PowerShell-Execution-Policy-1024x443.png ตรวจสอบนโยบายการดำเนินการ PowerShell ปัจจุบัน

ขั้นตอนที่ 2: ตั้งค่านโยบายการดำเนินการ PowerShell

หากต้องการเปลี่ยนนโยบายการดำเนินการ PowerShell บนคอมพิวเตอร์ Windows ของคุณ คุณสามารถใช้ Set-ExecutionPolicy cmdlet นโยบายการดำเนินการแต่ละนโยบายได้รับการออกแบบมาเพื่อวัตถุประสงค์เฉพาะ ดังนั้นโปรดตรวจสอบให้แน่ใจว่าคุณเข้าใจจุดประสงค์ของนโยบายนั้นอย่างถ่องแท้ก่อนทำการแก้ไขใดๆ

ลงนามระยะไกลแล้ว

นี่เป็นนโยบายการดำเนินการที่แนะนำอย่างกว้างขวางที่สุดสำหรับนักพัฒนา โดยกำหนดให้สคริปต์ที่ดาวน์โหลดทั้งหมดต้องลงนามโดยผู้เผยแพร่ที่เชื่อถือได้ สิ่งนี้ช่วยให้คุณมีความยืดหยุ่นเพียงพอในการเรียกใช้สคริปต์ของคุณในขณะที่ยังคงป้องกันไฟล์ที่ดาวน์โหลดบางไฟล์ที่ไม่ปลอดภัย

เรียกใช้คำสั่งด้านล่างเพื่อตั้งค่านโยบายการดำเนินการเป็น RemoteSigned


Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Force

คัดลอก


Set-ExecutionPolicy



-



ExecutionPolicy RemoteSigned



-



Force

สำหรับผู้ใช้ที่ไม่ใช่ผู้ดูแลระบบภายในอุปกรณ์ Windows คุณสามารถเปลี่ยนนโยบายการดำเนินการสำหรับผู้ใช้ปัจจุบันได้โดยใช้คำสั่งด้านล่าง


Set-ExecutionPolicy -ExecutionPolicy -Scope CurrentUser RemoteSigned -Force

คัดลอก


Set-ExecutionPolicy



-



ExecutionPolicy



-



Scope CurrentUser RemoteSigned



-



Force

ในภาพด้านล่าง เราจะเห็นว่านโยบายการดำเนินการถูกตั้งค่าเป็น RemoteSigned ตอนนี้ควรอนุญาตให้ผู้ใช้สามารถเรียกใช้สคริปต์และแก้ไขข้อผิดพลาด“ การเรียกใช้สคริปต์ถูกปิดใช้งานบนระบบนี้” อย่างถาวร

/th/images/Set-PowerShell-execution-policy-to-RemoteSigned-1024x442.png ตั้งค่านโยบายการดำเนินการ PowerShell เป็น RemoteSigned

บายพาส

โดยทั่วไปนโยบายการดำเนินการบายพาสจะใช้สำหรับงานอัตโนมัติชั่วคราวและการเรียกใช้สคริปต์การติดตั้งแบบครั้งเดียว อนุญาตให้คุณเรียกใช้สคริปต์เดียวโดยไม่ต้องเปลี่ยนการตั้งค่าทั้งระบบหรือต้องการสิทธิ์ของผู้ดูแลระบบ การเรียกใช้สคริปต์ของคุณด้วยนโยบายการดำเนินการบายพาสสามารถแก้ไขข้อผิดพลาด “ การเรียกใช้สคริปต์ถูกปิดใช้งานบนระบบนี้ ” ได้อย่างปลอดภัย

เปิดใช้ PowerShell และเรียกใช้คำสั่งด้านล่างเพื่อรันสคริปต์ด้วยนโยบายการดำเนินการบายพาส ตรวจสอบให้แน่ใจว่าคุณป้อนเส้นทางที่ถูกต้องของไฟล์สคริปต์ก่อนที่จะรันคำสั่ง


powershell.exe -ExecutionPolicy Bypass -File "C:\Script_Path\yourscript.ps1"

คัดลอก


powershell.exe



-



ExecutionPolicy Bypass



-



File



"C:\Script_Path\yourscript.ps1"

คุณยังสามารถตั้งค่าโหมดบายพาสสำหรับเซสชัน PowerShell ปัจจุบันได้โดยใช้คำสั่งด้านล่างเท่านั้น การเปลี่ยนแปลงนี้จะหายไปเมื่อคุณปิดหน้าต่าง PowerShell


Set-ExecutionPolicy Bypass -Scope Process

คัดลอก


Set-ExecutionPolicy



Bypass



-



Scope



Process

/th/images/Set-PowerShell-execution-policy-to-Bypass-1024x515.png ตั้งค่านโยบายการดำเนินการ PowerShell เป็นการเลี่ยงผ่าน

ไม่จำกัด

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

เรียกใช้คำสั่งด้านล่างเพื่อตั้งค่านโยบายการดำเนินการเป็นไม่จำกัด เมื่อถูกถามว่า " คุณต้องการเปลี่ยนนโยบายการดำเนินการหรือไม่ ให้พิมพ์ A (ใช่เป็นทั้งหมด) แล้วกดปุ่ม Enter เพื่อแก้ไขนโยบายการดำเนินการได้สำเร็จ


Set-ExecutionPolicy -ExecutionPolicy Unrestricted

คัดลอก


Set-ExecutionPolicy



-



ExecutionPolicy Unrestricted

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

/th/images/Set-PowerShell-execution-policy-to-unrestricted-1024x429.png ตั้งค่านโยบายการดำเนินการ PowerShell เป็นไม่จำกัด

ตรวจสอบนโยบายการดำเนินการ PowerShell ในรีจิสทรี

คุณสามารถตรวจสอบการกำหนดค่านโยบายการดำเนินการ PowerShell ผ่าน Windows Registry ได้โดยใช้ขั้นตอนต่อไปนี้:

  1. บนพีซี Windows ของคุณ คลิกขวาที่ Start เลือก Run พิมพ์ regedit แล้วกดปุ่ม Enter เพื่อเปิดตัวแก้ไขรีจิสทรี

  2. ไปที่เส้นทางรีจิสทรีด้านล่างและค้นหาค่าคีย์ ExecutionPolicy เพื่อกำหนดนโยบายการดำเนินการปัจจุบัน


Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell

คัดลอก


Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\



1



\ShellIds\Microsoft.PowerShell

/th/images/Check-PowerShell-Execution-Policy-in-Windows-Registry-1024x531.png ตรวจสอบนโยบายการดำเนินการ PowerShell ใน Windows Registry

ความคิดสุดท้าย

ข้อความข้อผิดพลาด “PowerShell: การเรียกใช้สคริปต์ถูกปิดใช้งานบนระบบนี้” อาจดูน่ากลัว แต่ในกรณีส่วนใหญ่ PowerShell จะทำงานเพื่อเป็นการป้องกันไว้ก่อนเท่านั้น การแก้ไขมักจะตรงไปตรงมา: ตรวจสอบนโยบายการดำเนินการของคุณก่อน และตั้งค่าเป็น RemoteSigned สำหรับการใช้งานในแต่ละวัน ใช้บายพาสเมื่อเหมาะสมเท่านั้น เมื่อคุณเข้าใจวิธีการทำงานของนโยบายการดำเนินการแล้ว ข้อผิดพลาดนี้จะจัดการได้ง่ายขึ้นมาก

นั่นคือทั้งหมดสำหรับคำแนะนำนี้ แบ่งปันคำถามหรือข้อเสนอแนะในความคิดเห็นด้านล่างได้เลย!

*️⃣ ลิงค์ที่มา:

เรียกใช้สคริปต์ PowerShell, Intune หรือนโยบายกลุ่มเพื่อกำหนดค่านโยบายการดำเนินการ PS, /th/images/PatchMyPC-AppCatalog-725x250-1.jpg , Execution Policy ,