You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用PowerShell修改Windows Terminal JSON配置文件设置默认字体?

修复Windows Terminal默认配置字体的PowerShell JSON编辑问题

如果你的PowerShell代码生成了无效JSON,大概率是没处理嵌套结构的创建,或者序列化时深度不够导致截断。以下是正确的实现步骤和代码:

问题根源

默认的settings.json里profiles.defaults下没有font节点,直接给font.face赋值会报错;另外ConvertTo-Json默认深度是2,嵌套层级超过会被强制转为字符串,破坏JSON结构。

正确实现代码

# 定位Windows Terminal配置文件路径
$settingsPath = "$env:LOCALAPPDATA\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\settings.json"

# 读取配置并转为PowerShell对象
$settings = Get-Content $settingsPath -Raw | ConvertFrom-Json

# 检查是否存在font节点,不存在则创建
if (-not $settings.profiles.defaults.PSObject.Properties['font']) {
    $settings.profiles.defaults | Add-Member -MemberType NoteProperty -Name 'font' -Value ([PSCustomObject]@{
        face = "Consolas"  # 替换成你需要的字体名称,比如"JetBrains Mono"
        # 可选:添加字号、粗细等其他配置
        # size = 12
        # weight = "normal"
    })
} else {
    # 已存在font节点时直接修改字体
    $settings.profiles.defaults.font.face = "Consolas"
}

# 序列化回JSON,指定深度避免嵌套结构被截断,保持格式缩进
$settings | ConvertTo-Json -Depth 10 -Indent 2 | Set-Content $settingsPath -Encoding UTF8

关键注意事项

  • 必须先判断font节点是否存在,不存在要先创建嵌套的PSCustomObject,不能直接给font.face赋值
  • ConvertTo-Json一定要加-Depth参数(建议设为10),否则多层嵌套的配置会被转为字符串,导致JSON无效
  • 写入文件时用-Encoding UTF8,避免乱码问题

内容的提问来源于stack exchange,提问作者scribe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 04:19:53