วิธีแก้ปัญหารันสคริปต์ Powershell บน Windows 10 ไม่ได้

Google+ Pinterest LinkedIn Tumblr +

โพสต์นี้เป็นรายละเอียดวิธีการแก้ปัญหารันสคริปต์ Powershell บนเครื่องคอมพิวเตอร์ระบบ Windows 10 (เวอร์ชัน 1909) ไม่ได้ เนื่องจากสาเหตุระบบไม่อนุญาตให้รันสคริปต์ (Disabled) ซึ่งนำมาบันทึกไว้เพื่อกันลืมและแบ่งปันกับผู้อ่านครับ

ปัญหารันสคริปต์ Powershell บน Windows 10 ไม่ได้

เมื่อผู้ใช้ Windows 10 พยายามทำการรันสคริปต์ Powershell ทุกชนิด คือ ไฟล์ formatting and configuration (.ps1xml), module script (.psm1) และ PowerShell profiles (.ps1) จะไม่สามารถรันได้ โดยจะได้รับข้อความแสดงข้อผิดพลาดลักษณะดังรูปด้านล่าง

PS C:\SARANITUS> .\UserReport.ps1
.\UserReport.ps1 : File C:\SARANITUS\UserReport.ps1 cannot be loaded because running scripts
is disabled on this system. For more information, see about_Execution_Policies at
https:/go.microsoft.com/fwlink/?LinkID=135170.
At line:1 char:1
+ .\UserReport.ps1
+ ~~~~~~~~~~~~~~~~
+ CategoryInfo          : SecurityError: (:) [], PSSecurityException
+ FullyQualifiedErrorId : UnauthorizedAccess
PS C:\SARANITUS> 

รูปด้านล่างเป็นหน้าต่าง PowerShell ที่เกิดข้อผิดพลาดเมื่อรันสคริปต์ Powershell

สาเหตุ

สาเหตุที่รันสคริปต์ Powershell บน Windows 10 ไม่ได้เนื่องจาก โดยดีฟอลท์ Windows 10 จะปิดการรันสคริปต์ Powershell ที่เป็นผลจากนโยบายการดำเนินการ (Execution policy) ซึ่งสามารถตรวจสอบนโยบายการดำเนินการที่มีผลบังคับใช้ (Effective execution policy) ได้ด้วยคำสั่ง Get-ExecutionPolicy

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

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

วิธีการแก้ปัญหารันสคริปต์ Powershell บน Windows 10 ไม่ได้

วิธีการแก้ไขปัญหารันสคริปต์ Powershell บนเครื่องคอมพิวเตอร์ระบบ Windows 10 ไม่ได้ จะต้องทำการเปลี่ยนนโยบายการดำเนินการ โดยใช้คำสั่ง Set-ExecutionPolicy ซึ่งจะมีผลโดยไม่ต้องรีสตาร์ทระบบ และจะมีผลถาวรจนกว่าจะทำการเปลี่ยนแปลงแก้ไข (อ่านรายละเอียดเพิ่มเติมจากเว็บไซต์ในแหล่งอ้างอิง)

รูปแบบคำสั่งอนุญาตให้ผู้ใช้คนปัจจุบันรันสคริปต์ Powershell คือ

Set-ExecutionPolicy -ExecutionPolicy <PolicyName> -Scope <scope>

1. ทำการรันคำสั่งที่ที่หน้าต่าง Powershell ดังนี้

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

2. บนหน้า Powershell ให้กดปุ่ม Y บนแป้นพิมพ์เพื่อยืนยันการเปลี่ยนนโยบายการดำเนินการ

ผลการทำงาน

หลังจากทำการแก้ไขการเปลี่ยนนโยบายการดำเนินการเรียบร้อยและ จากนั้นจะสามารถรันสคริปต์ Powershell ได้ตามปกติ

รูปด้านล่างเป็นผลการคำสั่ง Get-ExecutionPolicy -List หลังการแก้ไขการเปลี่ยนนโยบายการดำเนินการ

หมายเหตุ:

  1. การเปลี่ยนนโยบายการดำเนินการสำหรับสโคป LocalMachine หรือ CurrentUser จะบันทึกการตั้งค่าในรีจีสทรี่ย์และจะมีผลอย่างถาวรจนกว่าจะถูกเปลี่ยนแปลง
  2. การเปลี่ยนนโยบายการดำเนินการสำหรับสโคป Process จะบันทึกการตั้งค่าในรีจีสทรี่ย์และจะมีผลจนกว่าโปรเซสนั้นถูกปิด

แหล่งอ้างอิง
Microsoft

ประวัติการปรับปรุงบทความ
18 ตุลาคม 2563 : เผยแพร่ครั้งแรก

Share.

Comments are closed.