PowerShell - 解決 ".ps1 檔案無法載入,因為這個系統上已停用指令碼執行。" 問題

在第一次撰寫PowerShell執行時,通常會發生"....  .ps1 檔案無法載入,因為這個系統上已停用指令碼執行。"的問題,這個問題跟 Windows 預設的 PowerShell 執行原則有關。





PowerShell 有4種執行原則:

  1. Restricted:所有PowerShell Script(.ps1) 皆無法執行。(Windows系統預設)
  2. AllSigned:所有PowerShell Script都要經過受信任的發行者簽屬過後才可執行。
  3. RemoteSigned:針對從異地下載下來的PowerShell Script需要經過受信任的發行者簽屬過後才可執行,本機的PowerShell Script可直接執行。
  4. Unrestricted:無限制,所有PowerShell Script皆可執行。

因為Window系統預設為Restricted,所以只需要改變設定就OK了。

打開PowerShell ISE,輸入 get-executionpolicy 看看目前的執行原則是什麼。這時候應該會看到Restricted。

接著使用set-executionpolicy remotesigned執行就可以更改了(限量使用RemoteSigned),在執行時會跳出警告視窗通知你要是否要改變,這是正常的,就不要怕的按下去就對了。



最後就可以看到Script順利的執行了。








參考來源:
TechNet - Using the Set-ExecutionPolicy Cmdlet
PowerShell get-help about_signing 指令





留言