Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
以编程方式更改PowerShell';s 16默认控制台颜色_Powershell_Colors_Customization - Fatal编程技术网

以编程方式更改PowerShell';s 16默认控制台颜色

以编程方式更改PowerShell';s 16默认控制台颜色,powershell,colors,customization,Powershell,Colors,Customization,PowerShell改进了(坦率地说)fugly Windows控制台颜色方案,将蓝色值指定给其16种控制台颜色中的一种(出于某种原因称为DarkMagenta的颜色),并将其用作默认屏幕背景 我想通过编程将16种颜色中的每一种都更改为自定义配色方案。例如,在我的PowerShell配置文件中 我找到了关于如何更改ConsoleHost的16种颜色中的哪一种被分配给不同类型的文本的解释,但我想要的是将ConsoleHost的16种颜色中的每一种都更改为不同的十六进制值。(仅限本人使用,不适用于其

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
您可以使用PS修改流程级别值,方法是:

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