Windows 安裝 CDK Toolkit 後出現 “因為這個系統上已停用指令碼執行,所以無法載入”

來記錄一下最近遇到的問題,在 Windows 上使用 npm 安裝 CDK Toolkit 執行出現錯誤

使用 cdk 指令出現 “因為這個系統上已停用指令碼執行,所以無法載入”

當我使用 npm 安裝完 aws-cdk 第一次要執行 cdk 指令的時候就出現以下的錯誤

PS C:\> cdk
cdk : 因為這個系統上已停用指令碼執行,所以無法載入 C:\Users\user\AppData\Roaming\npm\cdk.ps1 檔案。如需詳細資訊,請參閱 about_Execution_Policies,網址為 https:/go.microsoft.com/fwlink/?LinkID=135170。
位於 線路:1 字元:1
+ cdk
+ ~~~
    + CategoryInfo          : SecurityError: (:) [], PSSecurityException
    + FullyQualifiedErrorId : UnauthorizedAccess

錯誤發生的原因其實是因為 Windows 在執行策略上有一些安全性設置,為了是要讓使用者不會執行一些不安全的指令,那要怎麼解決這個問題呢?

解決 “因為這個系統上已停用指令碼執行,所以無法載入”

首先我們先使用指令查詢一下目前的執行原則是什麼

PS C:\> Get-ExecutionPolicy
Restricted

以預設來說是 Restricted 它的意思是關閉腳本執行功能。

我們希望本機可以執行腳本又要保留安全性,我們要怎麼做呢?答案是我們可以使用 RemoteSigned 它的意思是在本機電腦中,不需要簽署就可以執行,但是從網路來的腳本需要簽署才可以執行。

PS C:\> Set-ExecutionPolicy

Cmdlet Set-ExecutionPolicy 在命令管線位置 1
請提供下列參數的值:
ExecutionPolicy: RemoteSigned

執行完後再執行 cdk 指令就會發現它可以正常執行了

PS C:\> cdk --version
1.106.1 (build c832c1b)