以编程方式更改PowerShell的16种默认控制台颜色

Leo*_*tis 4 powershell customization colors

PowerShell通过为其16种控制台颜色之一( - 出于某种原因称为DarkMagenta的颜色)分配蓝色值,改进了(坦率地)非常丑陋的Windows控制台配色方案,并将其用作默认屏幕背景.

我想以编程方式将16种颜色中的每种颜色更改为自定义颜色方案.例如,在我的PowerShell配置文件中.

我已经找到了关于如何改变ConsoleHost的16种颜色中的哪一种被分配给不同种类的文本的解释,但我想要的是实际上将ConsoleHost的16种颜色中的每一种颜色改为不同的十六进制值.(仅限我自己,不适用于其他用户或其他控制台,例如cmd.exe.)

当然,这可以通过右键单击菜单栏并手动调整"属性"或"默认"设置来完成,但这会很快累.我找不到这些设置持久化的位置.

(我已经搜索了注册表C:\Users\<current_user>\AppData,并且没有找到任何内容,除了下面的ColorTable##属性HKCU:\Console,其范围明显比PowerShell控制台设置更广泛.)

如果有人可以提供帮助,我们将不胜感激.

Fro*_* F. 9

控制台颜色在多个位置定义:

  • 全局/默认:HKCU:\Console.这适用于所有应用程序,conhost.exe包括cmd.exepowershell.exe.
  • 每个流程: HKCU:\Console\<PROCESS_PATH_WITH_UNDESCORE>针对特定流程的更改.防爆.HKEY_CURRENT_USER\Console\%SystemRoot%_System32_WindowsPowerShell_v1.0_powershell.exe已定义并已修改ColorTable05ColorTable06.
  • 每个快捷方式:快捷方式(.lnk)内.这很难以编程方式修改,可能需要P\Invoke.

您可以使用以下方法修改过程级值:

Set-ItemProperty -Path "HKCU:\Console\%SystemRoot%_System32_WindowsPowerShell_v1.0_powershell.exe" -Name ColorTable04 -Value 5645313
Run Code Online (Sandbox Code Playgroud)

请注意,要查看进程级别的值,您需要使用run,windows explorer等启动PS.如果使用其中一个快捷方式,则将使用快捷方式的值.因此,修改快捷方式并保留其副本以进行新设置可能更容易.

每个"ColorTable"在System.ConsoleColor-enum中都有一个硬编码的名称,因此他们使用名为DarkMagneta的名称只是"随机".可能是因为它是一种不常用的独特颜色.


Kor*_*ill 5

我搜索了"更改powershell控制台颜色"并找到了大量的例子.

也许这就是你要找的东西:

如何设置PowerShell控制台背景颜色

$Host.UI.RawUI.BackgroundColor = ($bckgrnd = 'DarkBlue')
$Host.UI.RawUI.ForegroundColor = 'White'
$Host.PrivateData.ErrorForegroundColor = 'Red'
$Host.PrivateData.ErrorBackgroundColor = $bckgrnd
$Host.PrivateData.WarningForegroundColor = 'Magenta'
$Host.PrivateData.WarningBackgroundColor = $bckgrnd
$Host.PrivateData.DebugForegroundColor = 'Yellow'
$Host.PrivateData.DebugBackgroundColor = $bckgrnd
$Host.PrivateData.VerboseForegroundColor = 'Green'
$Host.PrivateData.VerboseBackgroundColor = $bckgrnd
$Host.PrivateData.ProgressForegroundColor = 'Cyan'
$Host.PrivateData.ProgressBackgroundColor = $bckgrnd
Clear-Host
Run Code Online (Sandbox Code Playgroud)

关于这个主题还有另一个讨论:

在配置文件脚本中使用十六进制值设置Powershell颜色

  • 在我 2.5 天的主题搜索中,我实际上遇到了所有这些材料。忘记 `$Host.UI.RawUI.BackgroundColor` 的值。我想改变的是‘DarkBlue’的值。这可以通过右键单击菜单栏轻松完成,但这些自定义保存在哪里?不在 Lee Holmes 引用的注册表项中,因为它不在我的系统中。 (2认同)