很多小伙伴在使用 VScode 自帶程序終端的時候會報出"系統禁止腳本運行的錯誤",
准備的原因,是因為 PowerShell 執行策略的問題。
解決方法:
- 管理員身份運行 window.powershell
- 執行:get-ExecutionPolicy,顯示Restricted,表示狀態是禁止的;
- 執行:set-ExecutionPolicy
- 會提示輸入參數:RemoteSigned
- 會提示進行 選擇:
2. 輸入:Y
之后就不會有問題了。
科普window.powershell 知識點:
1
2
3
|
Windows給powershell設定了一個叫“執行策略”的東西。
為什么要弄這么一個執行策略呢,因為powershell能做的事情太多了,為了避免一些惡意腳本直接運行,一般家用的windows系統默認將執行策略設置成了“Restricted”,即受限制的。
|
我們可以運行命令來查看自己電腦上的執行策略被設置成了什么:
cmd Get-ExecutionPolicy -LIST
顯示:
Scope ExecutionPolicy
----- ---------------
MachinePolicy Undefined
UserPolicy Undefined
Process Undefined
CurrentUser Undefined
LocalMachine Unrestricted
或者運行Get-ExecutionPolicy,輸出Restricted
說明電腦是受限制的,不能運行任何的腳本。
所有的執行策略如下所示(參考About Execution Policies):
AllSigned. 要求所有腳本和配置文件均需受信任的發布者簽名,包括在本地計算機上編寫的腳本。(安全但是本地編寫的腳本也要簽名,麻煩)
Bypass. 不會阻止你運行任何腳本,也沒有提示和警告。(不安全)
Default. 默認的執行策略,普通桌面Windows默認Restricted,服務器windows默認RemoteSigned。
RemoteSigned. 要求從互聯網上下載的所有腳本和配置文件均需要受信任的發布者簽名,本地腳本則不需要簽名。是Windows服務器的默認執行策略。(較為安全)
Restricted. 無法加載配置文件或運行腳本。桌面Windows的默認執行策略。(安全,但無法運行腳本)
Undefined. No execution policy is set for the scope. Removes an assigned execution policy from a scope that is not set by a Group Policy. If the execution policy in all scopes is Undefined, the effective execution policy is Restricted.(這里的Undefined不知道是什么東西,先不管它)
Unrestricted. 從PowerShell 6.0開始,這是非Windows系統的默認執行策略,並且不能更改。 能夠加載任何配置文件和運行任何腳本。如果運行從網上下載的未簽名腳本,則會在運行之前提示您獲得許可。(不安全)
經過權衡安全和便捷,決定設置成RemoteSigned策略,運行一下命令
cmd執行Set-ExecutionPolicy 輸入參數:RemoteSigned 顯示: 執行策略可幫助你防止執行不信任的腳本。更改執行策略可能會產生安全風險,如 https:/go.microsoft.com/fwlink/?LinkID=135170 中的 about_Execution_Policies 幫助主題所述。是否要更改執行策略? [Y] 是(Y) [A] 全是(A) [N] 否(N) [L] 全否(L) [S] 暫停(S) [?] 幫助 (默認值為“N”): y
用戶如果是第一次使用powershell 執行腳本 的話。其中的原因是:
windows默認不允許任何腳本運行,你可以使用"Set-ExecutionPolicy"cmdlet來改變的你PowerShell環境。
你可以使用如下命令讓PowerShell運行在無限制的環境之下:
Set-ExecutionPolicy Unrestricted
Unrestricted 為允許所有的腳本運行
在win7(含)以上必須使用管理員的權限啟動命令命令行,否則會報“Set-ExecutionPolicy : 對注冊表項“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell”的訪問被拒絕。”錯誤。