必须手动配置 terminal.integrated.defaultprofile.windows 为 vscode 终端选择菜单中显示的完全一致的原样字符串,如“powershell (pwsh)”,并关闭所有终端标签页后新建,否则仍回退到 cmd.exe。

必须手动配置 terminal.integrated.defaultProfile.windows,且值必须和 VSCode 终端选择菜单里显示的完整名称完全一致,否则它就回退到 cmd.exe。
怎么确认 PowerShell 名字是否匹配
VSCode 不认“PowerShell”“pwsh”“PowerShell 7”这些模糊叫法,只认命令面板里 Terminal: Select Default Profile 弹出列表中显示的**原样字符串**。常见情况包括:
- 如果你装的是 PowerShell 7+,列表里显示的是
PowerShell (pwsh),那配置里就得写"PowerShell (pwsh)",不能只写"PowerShell" - Windows 自带的 5.1 版本可能显示为
PowerShell或PowerShell (x64),取决于系统架构和 VSCode 检测逻辑 - 运行
where powershell和where pwsh,看哪个有输出——有输出的那个才被 VSCode 识别,名字也来自它的可执行文件路径解析
为什么改了 settings.json 还是启动 cmd
不是配置没保存,而是三个关键点没对上:
-
terminal.integrated.defaultProfile.windows键名必须完整拼写,漏掉.windows后缀或写成.shell.windows(已弃用)都会静默失效 - 工作区目录下存在
.vscode/settings.json,且里面也定义了terminal.integrated.defaultProfile.windows→ 它会直接覆盖用户级设置 - 终端 tab 没关干净:VSCode 不会把正在跑
cmd.exe的窗口“热切换”成 PowerShell,旧进程一直活着,新配置只对新建终端生效
PowerShell 启动就报 ExecutionPolicy 错误怎么办
这不是终端配错了,是 PowerShell 自身策略阻止脚本加载,典型错误信息是:The file ... is not digitally signed 或 cannot be loaded because running scripts is disabled。别全局改系统策略,只绕过当前终端:
- 在
settings.json中补全terminal.integrated.profiles.windows块,并给 PowerShell profile 加args参数 - 例如,若你用的是
PowerShell (pwsh),就加:"args": ["-ExecutionPolicy", "Bypass", "-NoExit"] -
-ExecutionPolicy Bypass只影响当前进程,-NoExit防止策略检查完立刻退出导致终端闪退
最稳的配置方式:直接编辑 settings.json
UI 下拉菜单看似方便,但容易被工作区设置覆盖、名字自动截断、或未触发完整 profile 注册。推荐手写 JSON:
- 按
Ctrl + ,→ 右上角点{}打开settings.json - 插入这两段(注意替换为你实际看到的 profile 名):
{ "terminal.integrated.defaultProfile.windows": "PowerShell (pwsh)", "terminal.integrated.profiles.windows": { "PowerShell (pwsh)": { "source": "PowerShell", "args": ["-ExecutionPolicy", "Bypass", "-NoExit"] } } } - 保存后,务必点击终端右上角垃圾桶图标关掉所有 tab,再按
Ctrl + `新建一个
真正容易被忽略的是 profile 名称的“一字不差”和已有终端进程的强制关闭——VSCode 不会告诉你它悄悄回退到了 cmd,只会安静地打开一个标签页,顶部写着 Command Prompt。











