VSCode运行代码遇到“无法加载文件”错误 - 脚本权限解锁
VSCode运行脚本报“无法加载文件”错误,因PowerShell执行策略限制。解决:运行`Set-ExecutionPolicyRemoteSigned-ScopeCurrentUser`,关闭并新建终端生效。注意区分终端类型,公司组策略锁定需联系IT。
先抛个结论:当你满心欢喜地在 VSCode 里敲下一条命令,却看到“无法加载文件”的报错,大概率不是代码写错了,也不是 VSCode 出了幺蛾子,而是 PowerShell 的执行策略挡在了前面。解决这个问题,最直接、最稳妥的做法是,把 CurrentUser 作用域下的执行策略改成 RemoteSigned,然后关掉终端重新打开——90% 的情况,这一步就搞定了。

为什么 Get-ExecutionPolicy 返回 Restricted 就一定报错
简单说,这事跟代码本身没关系,是 PowerShell 的“安保系统”在起作用。它的默认策略就是 Restricted,意思是“本地脚本,一律不准执行”。你想想,Windows 这么多年来,安全策略一直很谨慎,Restricted 就是最严的那一档——连你自己写的 .ps1 文件,打个 ./deploy.ps1 都会被拦下。VSCode 的内置终端,启动的就是当前用户的 PowerShell 进程,它只看 CurrentUser 这一层策略。哪怕你之前用管理员权限改过 LocalMachine 级别,只要 CurrentUser 还是 Restricted 或 Undefined(这表示继承默认),VSCode 终端照拦不误。
- 怎么验证?跑一下
Get-ExecutionPolicy -List,重点看CurrentUser那一行到底写了什么。 - 怎么判断?错误信息里如果带着
SecurityError、UnauthorizedAccess,或者明确指向了某个.ps1或.py文件的路径,那基本可以锁定是策略的问题。 - 一个常见的误区:同一行命令,你在 CMD 或 Git Bash 里跑得好好的,不代表在 PowerShell 里也能跑。因为 CMD 和 Git Bash 压根不走这套执行策略,它们没有这道安检。
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser 必须加 -Scope CurrentUser
很多人在这一步翻车,就是因为漏掉了 -Scope CurrentUser 这个参数。如果不加,PowerShell 默认会试图去改 LocalMachine 级别,这需要管理员权限,而且 VSCode 根本不会理会——它只认你当前用户自己的策略设定。加了 -Scope CurrentUser 这条命令,不需要管理员权限,也不会改动系统级的设置,只放开你个人账户下对本地脚本的执行权。同时,它仍然会校验从网络下载的脚本签名,安全边界非常清晰。
- 改完之后,务必要关掉所有已经打开的 VSCode 终端窗口,然后按
Ctrl+Shift+`新建一个。因为 PowerShell 进程不重启,新的策略是不会加载进来的。 - 别图省事去用
Unrestricted,它会弹警告、绕过所有检查,有些杀毒软件会直接拦截。也别用Bypass,它只对当前进程有效,VSCode 一重启就失效了。 - 如果你的电脑是公司配的,跑完
Get-ExecutionPolicy -List发现MachinePolicy : Defined,那就说明组策略已经把执行策略锁死了。这种情况下,本地命令是改不了的,得找 IT 部门开白名单,硬改没用。
终端左下角显示的不是 PowerShell?那就先切 Profile
有人可能会问:“我明明按你说的改了策略,怎么还报错?” 别急,还有一种可能:VSCode 终端里启动的根本不是 PowerShell 进程。Windows 10 和 11 默认终端确实是 PowerShell,但如果你后来装过 WSL、Git Bash,或者手动改过配置,默认 profile 可能已经悄悄被换掉了。
- 怎么检查?按
Ctrl+Shift+P,输入Terminal: Select Default Profile,看看选中的是不是PowerShell。 - 怎么改?手动改设置也行:在
settings.json里加上"terminal.integrated.defaultProfile.windows": "PowerShell"。 - 改完之后,已经打开的终端不会自动切换,必须新建一个才会生效。
- 终端提示符如果是
pwsh(PowerShell Core),它同样适用这套策略。但Get-ExecutionPolicy可能会返回Undefined,这表示它实际继承的是 Windows PowerShell 的策略,所以仍然需要按上面的方式设置。
不想改策略?临时绕过比永久修改更安全
有时候,你只是开发调试阶段需要跑一次脚本,完全没必要动系统的策略。下面几种方式,不改任何设置,只对单次命令生效:
- 运行单个脚本:
powershell -ExecutionPolicy Bypass -File .\deploy.ps1 - 调用 Node 工具时绕过封装脚本:先
where yarn查路径,再用node C:\path\yarn.js直接运行 JS 文件。 - 最省事的办法:点终端右上角「+」旁的下拉箭头,选
Command Prompt或Git Bash,它们完全没有执行策略的限制。 - 注意区分:
python script.py能跑,不等于./script.py能跑。前者是调用 Python 解释器,把script.py当作参数传进去;后者是 PowerShell 在尝试“执行脚本”,会触发执行策略检查。
真正卡住人的,从来不是命令输错了,而是没确认 CurrentUser 这层策略到底生效了没有,没关掉旧的终端来加载新配置,或者误以为改了一个系统级别的策略就能一劳永逸。记住,PowerShell 的执行策略是按作用域分层加载的,它不是全局广播。改完之后,记得新开一个终端,再跑一次 Get-ExecutionPolicy 确认一下。这样,才算真正把问题解决了。
Windows 10 是一款微软推出的经典操作系统,拥有硬件兼容性与多任务处理能力。它更偏向把系统状态查看和常用调节动作放在一起,适合需要持续观察和微调设备状态的场景。
极度公式是一款跨平台专业LaTeX公式识别编辑软件,支持OCR公式识别和多平台编辑。和使用说明,避免使用,享受完整功能与稳定支持。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。
















