17370845950

解决 VScode (因为在此系统上禁止运行脚本)报错

在使用 vscode 内置的程序终端时,许多用户可能会遇到“系统禁止脚本运行的错误”。这是由于 powershell 的执行策略设置所导致的。

解决方法:

  1. 以管理员身份运行 Windows PowerShell,输入以下命令查看当前的执行策略:

    Get-ExecutionPolicy

    如果输出显示为 Restricted,表示当前策略是禁止运行脚本的。

  2. 接下来,输入以下命令并按提示操作:

    Set-ExecutionPolicy RemoteSigned

    系统会提示您输入参数,选择 RemoteSigned 并按回车键。随后会出现确认提示:

    输入 Y 确认更改。

完成以上步骤后,VScode 终端中的脚本运行问题应该得到解决。

Windows PowerShell 执行策略知识点:

PowerShell 的执行策略是一种安全机制,用于防止恶意脚本的自动运行。Windows 家用版默认设置为 Restricted,即禁止运行任何脚本。

要查看系统上的执行策略,可以使用以下命令:

Get-ExecutionPolicy -List

输出结果可能如下:

Scope           ExecutionPolicy
-----           ---------------
MachinePolicy   Undefined
UserPolicy      Undefined
Process         Undefined
CurrentUser     Undefined
LocalMachine    Unrestricted

或者直接使用:

Get-ExecutionPolicy

如果输出为 Restricted,表示系统禁止运行任何脚本。

PowerShell 的执行策略有以下几种:

  • AllSigned:要求所有脚本和配置文件均需受信任的发布者签名,包括本地脚本。(安全但麻烦)
  • Bypass:不阻止任何脚本运行,无提示和警告。(不安全)
  • Default:桌面 Windows 默认 Restricted,服务器 Windows 默认 RemoteSigned
  • RemoteSigned:要求从互联网下载的脚本和配置文件需受信任的发布者签名,本地脚本无此要求。这是 Windows 服务器的默认策略。(较为安全)
  • Restricted:禁止加载配置文件或运行脚本。这是桌面 Windows 的默认策略。(安全但无法运行脚本)
  • Undefined:未设置执行策略的范围。如果所有范围均为 Undefined,则有效策略为 Restricted
  • Unrestricted:从 PowerShell 6.0 开始,这是非 Windows 系统的默认策略且不可更改。可以加载任何配置文件和运行任何脚本,但会对未签名的网络脚本进行运行前提示。(不安全)

为了在安全与便捷之间取得平衡,建议将执行策略设置为 RemoteSigned。执行以下命令:

Set-ExecutionPolicy RemoteSigned

系统会提示确认更改,输入 Y 即可完成设置。