答案是必须修改powershell执行策略:先运行get-executionpolicy确认为restricted,再以普通权限执行set-executionpolicy remotesigned -scope currentuser,最后关闭并新建vscode终端生效。

VSCode 里执行 .ps1 脚本报错“无法加载文件,因为在此系统上禁止运行脚本”,根本不是 VSCode 的问题,而是 Windows PowerShell 默认策略在拦截——必须明确作用域、改对命令、新开终端,三者缺一不可。
Get-ExecutionPolicy 返回 Restricted 就坐实了策略问题
错误信息里只要出现“无法加载文件 xxx.ps1”,且路径是本地绝对路径(比如 C:\Users\name\AppData\Roaming\npm\yarn.ps1),基本就是 PowerShell 策略拦的。验证方式很简单:
- 在 VSCode 集成终端里直接运行
Get-ExecutionPolicy,返回Restricted就确认了 - 看终端左下角显示的是
PowerShell还是Command Prompt或Git Bash;Win10/11 默认就是 PowerShell,但很多人没注意 - 如果错误里带
CategoryInfo : SecurityError或UnauthorizedAccess,基本可排除 Node、Python 本身问题
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser 是最稳解法
开发调试阶段,只改当前用户策略,安全、快速、不污染系统:
- 必须带上
-Scope CurrentUser—— 省略它会要求管理员权限,且影响整个机器 -
RemoteSigned允许本地脚本无条件运行,仅对从网络下载的脚本做签名校验,是微软官方推荐的折中方案 - 执行完不用重启 VSCode,但必须关掉当前终端窗口,再按
Ctrl+Shift+`新开一个才生效 - 新开终端后立刻运行
Get-ExecutionPolicy -Scope CurrentUser,应返回RemoteSigned
VSCode 终端默认未必是 PowerShell,Profile 必须手动选
很多人改了策略还报错,是因为 VSCode 终端压根没启动 PowerShell 进程:
- 按
Ctrl+Shift+P→ 输入Terminal: Select Default Profile→ 回车 → 明确选PowerShell (pwsh)或PowerShell (Windows) - 如果列表为空,说明
powershell.defaultVersion没配对,或 PATH 未包含其目录 - 改完后,已打开的终端不会自动切换,必须新建一个
Ctrl+Shift+`才生效 - 新终端左上角标签应显示
PowerShell,提示符为PS C:\
别用 Bypass 或 Unrestricted,它们看似省事实则埋雷
Bypass 和 Unrestricted 看似“一劳永逸”,但实际风险高、兼容差:
-
Bypass彻底关闭所有检查,在企业环境常被组策略强制覆盖,反而导致行为不一致 -
Unrestricted允许任意未签名脚本运行,部分安全软件会直接拦截 - VSCode 重启后,
Bypass和Unrestricted可能失效(尤其配合某些防病毒软件时) -
RemoteSigned已足够覆盖 99% 的本地开发场景(yarn、npx、tsc、自写部署脚本等)
真正容易被忽略的点是:策略修改后必须新开终端,以及 VSCode 默认终端未必是你以为的那个 shell——这两处卡住的人最多。











