[powershell]PowerShell 更改執行原則,解決無法執行 ps1 指令稿問題

參考網址:office指南

問題

在執行 Windows PowerShell 的 .ps1 指令稿時,出現「系統上已停用指令碼執行」的錯誤訊息,該如何解決?

PowerShell 錯誤訊息
. : 因為這個系統上已停用指令碼執行,所以無法載入 C:\Users\USERNAME\Documents\Windows
PowerShell\profile.ps1 檔案。如需詳細資訊,請參閱 about_Execution_Policies,網址為
https:/go.microsoft.com/fwlink/?LinkID=135170。
位於 線路:1 字元:3
+ . 'C:\Users\USERNAME\Documents\WindowsPowerShell\profile.ps1'
+   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : SecurityError: (:) [], PSSecurityException
    + FullyQualifiedErrorId : UnauthorizedAccess

解法

若執行 .ps1 指令稿卻出現這樣的錯誤訊息,表示目前 PowerShell 中的執行原則(Excution Policy)可能被設定為 Restricted,不允許執行指令稿。

若想要讓 PowerShell 允許執行自己撰寫的 .ps1 指令稿,可依照以下步驟更改執行原則的設定。
STEP 1
在 PowerShell 啟動捷徑上按下滑鼠右鍵,選擇以系統管理員身分執行 PowerShell。

以系統管理員身分執行 PowerShell

STEP 2
執行以下 PowerShell 指令,將執行原則設定為 RemoteSigned

Set-ExecutionPolicy RemoteSigned
變更執行原則

變更執行原則之後,就可以正常執行自己撰寫的 .ps1 指令稿了。

討論

如果想要查詢目前 PowerShell 的執行原則設定值,可以執行以下 PowerShell 指令:

Get-ExecutionPolicy
RemoteSigned

如果想要將 PowerShell 的執行原則回復成預設的 Restricted,可以執行:

Set-ExecutionPolicy Restricted
本篇發表於 Windows系統。將永久鏈結加入書籤。