Powershell:获取Windows终端的背景颜色

问题描述 投票:0回答:1

我在Windows 11下的Powershell脚本中使用ANSI颜色。为了使字体的背景颜色适应终端的当前背景颜色,我想读出这个Windows终端背景颜色。 但是,我知道的所有方法都只返回“默认颜色”,这是不正确的。

终端设置为“Campbell Powershell”配色方案(蓝色背景)。

终端设置存储在“%LOCALAPPDATA%\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\settings.json”下的 JSON 文件中。我可以在那里提取设置。但如果有人知道在 Powershell 中获取终端背景颜色的更简单方法,那就更容易了。

我尝试过:

PS C:\> $Host.ui.RawUI.BackgroundColor
Black

PS C:\> [console]::BackgroundColor
Black

两个命令都返回黑色,这是方案而不是颜色!

powershell background-color windows-terminal
1个回答
0
投票

我不想在这里给出否定的答案,但有时当数据支持时,这是有道理的。

简短回答: 这在 Windows 终端中尚不可用。有一个 功能请求 (#3178) ,(根据 Windows 终端团队的说法)积压工作已经有一段时间了。


更长的解释:

当您的脚本使用 ANSI 转义码设置颜色时,这些颜色将在 Windows 终端上生效。但是,

$Host.ui
设置适用于 PowerShell 本身,与 Windows 终端值分开。

因此,我们需要一种以编程方式读取“当前”Windows 终端 ANSI 颜色代码设置的方法。不幸的是,目前还无法实现。

这个答案

提到了在 xterm 中执行此操作的方法,并且这些代码在相当多的终端仿真器中实现,但是(来自该评论的父问题)尚未在 Windows Terminal 中实现(问题#3718) . 我怀疑在这种情况下读取 JSON 设置是否会有帮助,因为它不会根据您设置的 ANSI 转义码来表示终端的当前

状态

我很乐意为您提供一些其他解决方法,但我几次尝试都无法想出一个。

© www.soinside.com 2019 - 2024. All rights reserved.