根本原因是Windows PowerShell默认执行策略为Restricted,禁止运行本地.ps1或.py脚本;需先运行Get-ExecutionPolicy确认策略,再用Set-ExecutionPolicy RemoteSigned -Scope CurrentUser临时生效,并确保VSCode终端默认Shell为PowerShell。

VSCode终端报“无法加载文件,因为在此系统上禁止运行脚本”,根本不是VSCode的问题,而是Windows PowerShell默认执行策略(Restricted)在起作用——它连本地.ps1或.py文件都不让直接执行。解决的关键不是改VSCode设置,而是明确当前终端类型、确认策略作用域、选对命令范围。
怎么确认是不是PowerShell执行策略导致的
错误信息里只要出现“无法加载文件 xxx.ps1”或“无法加载文件 xxx.py”,且路径是本地绝对路径(比如C:\Users\name\AppData\Roaming\npm\yarn.ps1),基本就是PowerShell策略拦截。先验证:
- 在VSCode集成终端里直接运行
Get-ExecutionPolicy,返回Restricted就坐实了 - 看终端左下角显示的是
PowerShell还是Command Prompt或Git Bash;默认是PowerShell(尤其Win10/11),但很多人没注意 - 如果错误里带
CategoryInfo : SecurityError或UnauthorizedAccess,基本可排除Node、Python本身问题
临时生效:只改当前用户,不需管理员权限
开发调试阶段,推荐用-Scope CurrentUser,安全、快速、不污染系统:
- 在VSCode终端里直接运行:
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser - 别漏掉
-Scope CurrentUser——省略它会要求管理员权限,且影响整个机器 - 执行完不用重启VSCode,关掉当前终端窗口,按
Ctrl+Shift+`新开一个就行 -
RemoteSigned允许本地脚本无条件运行,仅对从网络下载的脚本做签名校验,是微软官方推荐的折中方案
为什么不能用Bypass或Unrestricted
这两个策略看似“一劳永逸”,但实际埋雷:
-
Bypass彻底关闭所有检查,在企业环境常被组策略强制覆盖,反而导致行为不一致 -
Unrestricted允许任意未签名脚本运行,风险高,且部分安全软件会直接拦截 - VSCode重启后,
Bypass和Unrestricted可能失效(尤其配合某些防病毒软件时) -
RemoteSigned已足够覆盖99%的本地开发场景(yarn、npx、tsc、自写部署脚本等)
终端根本没进PowerShell?那就切Profile
很多人改了策略还报错,是因为VSCode终端压根没启动PowerShell进程:
- 按
Ctrl+Shift+P→ 输入Terminal: Select Default Profile→ 选PowerShell - 或者手动修改设置:
"terminal.integrated.defaultProfile.windows": "PowerShell" - 改完后,已打开的终端不会自动切换,必须新建一个(
Ctrl+Shift+`)才生效 - 如果看到终端提示符是
pwsh(PowerShell Core 7+),策略同样适用,但Get-ExecutionPolicy可能显示Undefined——此时仍需按上述步骤设置,它会继承Windows PowerShell策略
真正卡住人的,往往不是策略本身,而是没意识到终端类型和策略作用域是两个独立变量:你可能在Command Prompt里折腾PowerShell策略,也可能给CurrentUser设了RemoteSigned,却在LocalMachine作用域下查策略——结果查不到,以为没生效。


















