跳到主要內容

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 指令





留言

這個網誌中的熱門文章

Windows 還原環境變數 Path 的值

有時候我們在安裝一些軟體的時候,會需要到系統變數的環境變數那邊加入軟體安裝位置的根目錄,但是有時候手一殘不小心把那一長串的環境變數刪掉了怎麼辦呢?別怕,限量有撇步可以還原,就讓我們繼續看下去。

C# - foreach Exception "集合已修改; 列舉作業可能尚未執行" 解決方法

限量今天在寫到一個功能時需要從List中將符合條件的Item刪掉,第一次迴圈能夠刪掉,但執行第二次迴圈時竟然出現Exception,Message為"集合已修改; 列舉作業可能尚未執行"(英文為"Collection was modified; enumeration operation may not execute.")。