如何在PowerShell中获取Windows Terminal的实际背景色?
获取Windows Terminal实际背景色的PowerShell方案
在Windows 11环境下的PowerShell脚本中使用ANSI颜色时,若要让字体背景色适配终端当前背景,需要读取Windows Terminal的实际RGB背景色,但常用命令返回的只是配色方案的标识而非真实颜色:
PS C:\> $Host.ui.RawUI.BackgroundColor Black PS C:\> [console]::BackgroundColor Black
以上命令返回的Black是配色方案中的颜色标识,并非“Campbell Powershell”这类自定义配色的实际蓝色RGB值。
可行的简便方法
目前没有原生PowerShell cmdlet直接获取Windows Terminal当前配色的实际RGB背景色,但可以通过以下两种简化方式实现:
1. 自动解析配置文件
无需手动定位路径,用PowerShell变量拼接配置文件路径后解析JSON:
# 获取Windows Terminal配置文件路径 $wtSettingsPath = Join-Path $env:LOCALAPPDATA "Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\settings.json" # 读取并解析配置 $settings = Get-Content $wtSettingsPath -Raw | ConvertFrom-Json # 获取当前使用的配色方案名称 $currentScheme = $settings.profiles.defaults.colorScheme # 提取对应配色的背景色RGB值 $bgColor = ($settings.schemes | Where-Object { $_.name -eq $currentScheme }).background # 输出结果 Write-Host "当前终端背景色:$bgColor"
2. 使用Windows Terminal的查询命令
较新版本的Windows Terminal支持--query参数查询配置,可通过该命令简化配置读取:
# 获取所有配色方案信息 $allSchemes = wt --query schemes | ConvertFrom-Json # 获取当前默认配置的配色方案名称 $currentScheme = (wt --query profiles.defaults | ConvertFrom-Json).colorScheme # 提取对应背景色 $bgColor = ($allSchemes | Where-Object { $_.name -eq $currentScheme }).background Write-Host "当前终端背景色:$bgColor"
说明
PowerShell的传统控制台API($Host.ui.RawUI、[console]类)仅识别系统预设的控制台颜色枚举,无法直接获取Windows Terminal独立的自定义配色方案中的实际RGB值,因此必须通过读取终端配置来获取真实颜色参数。
内容的提问来源于stack exchange,提问作者Darth Coder
相关产品推荐
相关产品推荐

