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

PowerShell 有一個執行原則選項,是 PowerShell 在載入組態檔或執行腳本時,為了防止不小心執行惡意腳本的選項

使用下面的指令可以查看當前的規則:
  
Get-ExecutionPolicy


預設是 Restricted ,所以在執行任何腳本時都會出現下面的錯誤:
    
. : 因為這個系統上已停用指令碼執行,所以無法載入 C:\Users\ruyut\Documents\WindowsPowerShell\Microsoft.PowerShell_profil
e.ps1 檔案。如需詳細資訊,請參閱 about_Execution_Policies,網址為 https:/go.microsoft.com/fwlink/?LinkID=135170。
位於 線路:1 字元:3
+ . 'C:\Users\ruyut\Documents\WindowsPowerShell\Microsoft.PowerShell_pr ...
+   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : SecurityError: (:) [], PSSecurityException
    + FullyQualifiedErrorId : UnauthorizedAccess
    


所有原則的簡易說明如下:
  • AllSigned: 所有腳本都可以執行,指令碼與設定檔則是需由信任的發行者簽署
  • Bypass: 不會封鎖任何項目,且不會顯示警告或提示
  • Default: 預設
  • RemoteSigned: 腳本和組態檔需要數位簽章,除非在本機電腦上撰寫
  • Undefined: 未設定
  • Unrestricted: 非 Windows 電腦使用的原則
筆者建議的是使用 RemoteSigned ,因為作為開發人員的確會時常撰寫腳本,每次都要簽屬很麻煩,所以才會選擇犧牲一點安全換取方便,不過實際使用前還是需要三思。

套用為 RemoteSigned 的指令如下:
  
Set-ExecutionPolicy RemoteSigned


執行後就不會再出現「已停用指令碼執行,所以無法載入」了!
註:需要 以系統管理員身分執行 PowerShell

參考資料:
about_Execution_Policies

留言