如何调整VSCode脚本执行策略以解决运行代码时无法加载文件的问题?
- 内容介绍
- 文章标签
- 相关推荐
本文共计728个文字,预计阅读时间需要3分钟。
这不是VSCode的bug,而是Windows PowerShell默认执行策略的限制。如果终端是PowerShell(VSCode Windows版默认就是),运行npm、yarn、vue、cnpm等命令,甚至本地.ps1或.py文件,都可能触发这个错误——只要路径不完全正确、文件不存在或路径拼写错误即可。确保路径完全正确、文件真实存在,即可避免此错误。
为什么Get-ExecutionPolicy返回Restricted却还是报错
关键在作用域。VSCode读取的是CurrentUser作用域的策略,不是全局或进程级的。即使你之前设过LocalMachine,只要CurrentUser仍是Undefined或Restricted,VSCode终端照样报错。
- 在VSCode终端里直接运行
Get-ExecutionPolicy -List,重点看CurrentUser那一行 -
Undefined表示该作用域没被显式设置,实际继承自更上层(通常是Restricted) - 只改
LocalMachine需要管理员权限,且企业环境常被组策略覆盖,无效 - 必须用
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser,不需管理员,VSCode重启后也生效
改完策略后命令还是不认,是不是没生效
PowerShell进程不重启,新策略不加载。VSCode里已打开的终端窗口不会自动刷新策略,必须关掉再新建一个。
- 改完策略后,不要点“重新运行”,而是关闭当前终端标签页,按
Ctrl+Shift+`新开一个 - 新开终端里立刻运行
Get-ExecutionPolicy确认返回RemoteSigned - 如果仍报错,检查左下角终端类型是否真是
PowerShell:按Ctrl+Shift+P→ 输入Terminal: Select Default Profile→ 明确选PowerShell - 别依赖“以管理员身份运行VSCode”:它只是绕过权限检查,但不改变策略作用域,且重启后策略仍可能回退
不想动PowerShell策略,有没有更轻量的绕过方式
有,而且更安全——绕过策略本身,而不是放宽它。
- 临时单次运行:
powershell -ExecutionPolicy Bypass -File .\deploy.ps1,只对这次有效,不影响任何策略 - 运行Node.js工具时,避免直接敲
yarn或npm,改用node C:\Users\me\AppData\Roaming\npm\yarn.js(路径可通过where yarn查) - 切终端是最省事的:按
Ctrl+Shift+`→ 点右上角箭头 → 选Command Prompt或Git Bash,它们没有执行策略限制 - 注意:
python script.py能跑 ≠./script.py能跑——后者才是PowerShell在尝试“执行脚本”,前者只是调用解释器传参
真正容易被忽略的点是:策略修改后必须新开终端,以及VSCode默认终端未必是你以为的那个shell。很多人反复改策略却无效,卡在了这两步上。
本文共计728个文字,预计阅读时间需要3分钟。
这不是VSCode的bug,而是Windows PowerShell默认执行策略的限制。如果终端是PowerShell(VSCode Windows版默认就是),运行npm、yarn、vue、cnpm等命令,甚至本地.ps1或.py文件,都可能触发这个错误——只要路径不完全正确、文件不存在或路径拼写错误即可。确保路径完全正确、文件真实存在,即可避免此错误。
为什么Get-ExecutionPolicy返回Restricted却还是报错
关键在作用域。VSCode读取的是CurrentUser作用域的策略,不是全局或进程级的。即使你之前设过LocalMachine,只要CurrentUser仍是Undefined或Restricted,VSCode终端照样报错。
- 在VSCode终端里直接运行
Get-ExecutionPolicy -List,重点看CurrentUser那一行 -
Undefined表示该作用域没被显式设置,实际继承自更上层(通常是Restricted) - 只改
LocalMachine需要管理员权限,且企业环境常被组策略覆盖,无效 - 必须用
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser,不需管理员,VSCode重启后也生效
改完策略后命令还是不认,是不是没生效
PowerShell进程不重启,新策略不加载。VSCode里已打开的终端窗口不会自动刷新策略,必须关掉再新建一个。
- 改完策略后,不要点“重新运行”,而是关闭当前终端标签页,按
Ctrl+Shift+`新开一个 - 新开终端里立刻运行
Get-ExecutionPolicy确认返回RemoteSigned - 如果仍报错,检查左下角终端类型是否真是
PowerShell:按Ctrl+Shift+P→ 输入Terminal: Select Default Profile→ 明确选PowerShell - 别依赖“以管理员身份运行VSCode”:它只是绕过权限检查,但不改变策略作用域,且重启后策略仍可能回退
不想动PowerShell策略,有没有更轻量的绕过方式
有,而且更安全——绕过策略本身,而不是放宽它。
- 临时单次运行:
powershell -ExecutionPolicy Bypass -File .\deploy.ps1,只对这次有效,不影响任何策略 - 运行Node.js工具时,避免直接敲
yarn或npm,改用node C:\Users\me\AppData\Roaming\npm\yarn.js(路径可通过where yarn查) - 切终端是最省事的:按
Ctrl+Shift+`→ 点右上角箭头 → 选Command Prompt或Git Bash,它们没有执行策略限制 - 注意:
python script.py能跑 ≠./script.py能跑——后者才是PowerShell在尝试“执行脚本”,前者只是调用解释器传参
真正容易被忽略的点是:策略修改后必须新开终端,以及VSCode默认终端未必是你以为的那个shell。很多人反复改策略却无效,卡在了这两步上。

