以编程方式更改PowerShell';s 16默认控制台颜色
PowerShell改进了(坦率地说)fugly Windows控制台颜色方案,将蓝色值指定给其16种控制台颜色中的一种(出于某种原因称为DarkMagenta的颜色),并将其用作默认屏幕背景 我想通过编程将16种颜色中的每一种都更改为自定义配色方案。例如,在我的PowerShell配置文件中 我找到了关于如何更改ConsoleHost的16种颜色中的哪一种被分配给不同类型的文本的解释,但我想要的是将ConsoleHost的16种颜色中的每一种都更改为不同的十六进制值。(仅限本人使用,不适用于其他用户或其他控制台,如以编程方式更改PowerShell';s 16默认控制台颜色,powershell,colors,customization,Powershell,Colors,Customization,PowerShell改进了(坦率地说)fugly Windows控制台颜色方案,将蓝色值指定给其16种控制台颜色中的一种(出于某种原因称为DarkMagenta的颜色),并将其用作默认屏幕背景 我想通过编程将16种颜色中的每一种都更改为自定义配色方案。例如,在我的PowerShell配置文件中 我找到了关于如何更改ConsoleHost的16种颜色中的哪一种被分配给不同类型的文本的解释,但我想要的是将ConsoleHost的16种颜色中的每一种都更改为不同的十六进制值。(仅限本人使用,不适用于其
cmd.exe
)
当然,这可以通过右键单击菜单栏并手动调整“属性”或“默认”设置来实现,但这很快就会让人感到厌倦。我找不到这些设置的持久化位置
(我已经搜索了注册表和C:\Users\\AppData
,除了HKCU:\Console
下的ColorTable##
属性外,什么也没找到,其范围显然比PowerShell控制台设置更广。)
如果有人能提供帮助,我将不胜感激。我搜索了“更改powershell控制台颜色”,并找到了大量示例
也许这就是你想要的:
关于该主题,还有另一个讨论:
控制台颜色在多个位置定义:
- Global/Default:
。这适用于所有HKCU:\Console
-应用程序,包括conhost.exe
和cmd.exe
powershell.exe
- 每个进程:
用于进程特定的更改。例如,HKCU:\Console\
已定义并已修改HKEY\U CURRENT\U USER\Console\%SystemRoot%\u System32\u WindowsPowerShell\u v1.0\u powershell.exe
和ColorTable05
ColorTable06
- 每个快捷方式:快捷方式(.lnk)内。这很难通过编程方式进行修改,可能需要P\Invoke
Set-ItemProperty -Path "HKCU:\Console\%SystemRoot%_System32_WindowsPowerShell_v1.0_powershell.exe" -Name ColorTable04 -Value 5645313
请注意,要查看进程级别的值,需要使用run、windows资源管理器等启动PS。如果使用其中一个快捷方式,则将使用快捷方式的值。因此,修改快捷方式并为新设置保留其副本可能更容易
每个“ColorTable”都有一个硬编码的名称,所以他们使用的是一个名为DarkMagneta的名称,这只是“随机的”。可能是因为它是一种独特的颜色,使用的不多。我为Windows控制台颜色制作了一个实用程序,名为
它可以从JSON预设文件中导入颜色,并负责从注册表和.lnk文件中删除覆盖。在我2.5天的主题搜索中,我实际上遇到了所有这些材料。忘记
$Host.UI.RawUI.BackgroundColor的值
。我想更改的是DarkBlue
的值。右键单击菜单栏很容易做到这一点,但这些自定义项保存在哪里?不在Lee Holmes引用的注册表项中,因为它不在我的系统中。如果它不存在,您是否尝试创建该项,以便在我的现有答案的答案中的最后一个链接上使该项正常工作,因此对于类似的问题?正确,在我答案底部的链接中讨论了每进程方法。OP提到他已经通过了所有这些链接,但2.5天后仍然没有解决问题。不清楚为什么,因为这些方法适用于其他人……我需要的是一个权威的来源来解释上述内容。我所能找到的只是没有解释底层系统逻辑的“技巧和窍门”。是否有一本书、标准或文档来源可以解释上述内容?无论如何,谢谢弗罗德和科里!今天这个帮助了我,谢谢你!不管多么麻烦,我都用它们将我拥有的颜色配置文件从一台机器转移到另一台机器。我想补充一点,您从windows+x
菜单调用的电源外壳实际上会启动一个快捷方式,该快捷方式位于:%APPDATA%\Microsoft\windows\Start menu\Programs\windows PowerShell
是否有方法读取每个“ColorTable”值的当前有效值,以及(理想情况下)它的来源?还有:有没有一种方法可以告诉我们使用什么进程键,因为似乎有一些反向环境变量插值在起作用?
Set-ItemProperty -Path "HKCU:\Console\%SystemRoot%_System32_WindowsPowerShell_v1.0_powershell.exe" -Name ColorTable04 -Value 5645313