VSCode调试PowerShell脚本失败需依次完成五步:一、安装启用Microsoft官方PowerShell扩展;二、通过命令面板选择正确PowerShell运行时(如pwsh 7.4.2);三、在.vscode下创建标准launch.json配置;四、Windows需设Set-ExecutionPolicy RemoteSigned;五、用test.ps1验证断点命中与变量查看。

VSCode 本身不控制 PowerShell 脚本能否运行、调试是否生效、签名是否被信任——这些全由 PowerShell 运行时、Windows 安全策略和证书系统决定。你看到的报错,90% 不是 VSCode 的 bug,而是环境没对齐。
PowerShell 终端不启动,默认还是 cmd 或 bash
VSCode 不会自动把 PowerShell 设为默认终端,哪怕你装了官方扩展也一样。必须手动指定,否则 Ctrl+` 打开的永远是系统默认 Shell。
- 打开设置 →
Terminal → Integrated → Default Profile,在 Windows 下选择PowerShell (x64)(优先选 x64,x86 在部分模块加载时会失败) - 如果下拉菜单为空,说明 VSCode 没检测到
pwsh.exe或powershell.exe,检查$env:PATH是否包含:C:\Windows\System32\WindowsPowerShell\v1.0\(5.1)或C:\Program Files\PowerShell\7\(7.x+) - 改完 PATH 后必须重启 VSCode,否则设置里仍看不到选项
执行 .ps1 报 “cannot be loaded because running scripts is disabled”
这是 PowerShell 的 ExecutionPolicy 在拦截,不是 VSCode 拒绝执行。它发生在脚本加载阶段,调试和普通运行都会触发。
- 在 VSCode 集成终端中运行:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser(仅当前用户,无需管理员权限) - 别用
Bypass或Unrestricted:前者绕过所有检查,后者可能被域组策略强制覆盖 - 注意:如果你同时用了
powershell.exe和pwsh.exe,它们的执行策略是独立的,得分别设(pwsh默认策略更宽松,但旧脚本常依赖 5.1)
断点灰色、F5 没反应、变量显示 undefined
根本原因通常是调试器没连上正确的 PowerShell 进程,或者 launch.json 配置失效。
- 确认右下角状态栏显示的是
PowerShell 7.x或Windows PowerShell 5.1,不是Loading…或空白 -
.vscode/launch.json必须存在,且script字段写成"${file}"(不能是"./test.ps1",Windows 下工作目录容易错乱) - 按
F5前确保当前编辑器焦点在.ps1文件上;如果文件未保存,调试器可能静默失败 - macOS/Linux 用户尤其要注意:
pwsh和powershell是两个不同可执行文件,launch.json中若没显式指定program字段,扩展可能选错
自己签名的脚本仍提示 “Signature verification failed”
VSCode 不参与签名验证——它只是把脚本交给 PowerShell 运行。验证失败,说明证书没被系统信任,和编辑器无关。
- 用
Get-AuthenticodeSignature .\myscript.ps1查看Status字段,如果不是Valid,就不用往下调了 - 签名证书必须导入到当前用户的
Trusted Root Certification Authorities或Trusted Publishers存储(用certmgr.msc图形界面,或命令Import-Certificate -FilePath cert.cer -CertStoreLocation Cert:\CurrentUser\Root) - 自签名证书默认不被信任;用
New-SelfSignedCertificate创建后,必须手动导入,否则无论怎么改ExecutionPolicy都无效
最易被忽略的一点:PowerShell 扩展的调试能力依赖后台服务 PowerShell Editor Services(PSES),它每次更新都可能重建缓存。遇到莫名其妙的调试失效,先试 Ctrl+Shift+P → PowerShell: Restart Session,比重装扩展快得多。


















