VSCode终端报“无法加载文件,因为在此系统上禁止运行脚本”是PowerShell默认Restricted策略所致,应执行Set-ExecutionPolicy RemoteSigned -Scope CurrentUser -Force并重启终端生效。

VSCode 终端为什么卡在“无法加载文件,因为在此系统上禁止运行脚本”
这不是 VSCode 的 bug,也不是你脚本写错了,而是 PowerShell 默认策略 Restricted 在生效——它连你本地磁盘上的 Activate.ps1、profile.ps1 甚至 yarn.ps1 都会直接拦截。VSCode 集成终端启动时会自动尝试加载用户配置文件,这一下就触发了策略检查,后续所有 .ps1 脚本(包括 npm 全局命令、conda 初始化、Python 虚拟环境激活)全部被拦。
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser 是最稳解法
VSCode 的 PowerShell 终端读取的是当前用户的策略,不是系统级的,所以改 CurrentUser 就够,不用管理员权限,也不影响其他账户:
-
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser -Force—— 加-Force避免交互确认 - 执行后必须关闭并重新打开 VSCode 终端,否则新策略不加载(PowerShell 进程没重启)
-
RemoteSigned允许你本地写的、磁盘路径里的.ps1直接运行,只对从浏览器/curl 下载的脚本要求签名,开发够用又不失安全 - 别用
Unrestricted或Bypass:前者每次运行都弹警告,后者等于关掉所有防护
终端默认不是 PowerShell?先查 terminal.integrated.defaultProfile.windows
很多人改完策略仍报错,是因为 VSCode 实际启动的压根不是 PowerShell:
- 按
Ctrl+,打开设置,搜terminal.integrated.defaultProfile.windows - 确认值是
Windows PowerShell或PowerShell (x64),不是Command Prompt或空值 - 如果列表里没 PowerShell 选项,说明
$env:PATH没包含powershell.exe或pwsh.exe路径,需手动添加并重启 VSCode - 改完策略后不重启终端,或终端类型设错,都会让策略变更完全失效
临时跑一次脚本?用 powershell -ExecutionPolicy Bypass -File .\xxx.ps1
适合调试单个脚本、CI 临时任务或不想动任何配置的场景:
- 命令本身不修改任何策略,只对本次调用生效
- 路径含空格或中文时,必须加引号:
powershell -ExecutionPolicy Bypass -File ".\my script.ps1" - 注意:不能省略
-File参数,否则会把脚本路径当成命令参数传给交互式 shell - VSCode 里可配为自定义任务或 launch.json 的
console调试方式,但别长期依赖它
真正卡住人的从来不是策略本身,而是没确认终端类型、没重启进程、或者误以为改了 LocalMachine 就万事大吉。策略只在对应作用域和进程生命周期内有效,多一层验证,少十次重试。


















