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

时间:2016-03-20 16:25:33

标签: powershell colors customization

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

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

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

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

(我已经搜索了注册表和C:\Users\<current_user>\AppData,除ColorTable##下的HKCU:\Console属性外,什么都没找到,其范围明显比PowerShell控制台设置更广。)< / p>

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

3 个答案:

答案 0 :(得分: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,windows explorer等启动PS。如果使用其中一个快捷方式,则将使用快捷方式的值。因此,修改快捷方式并保留其副本以进行新设置可能更容易。

每个&#34; ColorTable&#34;在System.ConsoleColor-enum中有一个硬编码的名称,所以它只是&#34;随机&#34;他们使用了名为DarkMagneta的那个。可能是因为它是一种没有被使用的独特颜色。

答案 1 :(得分:5)

我搜索&#34;更改powershell控制台颜色&#34;并找到了大量的例子。

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

How can I set the PowerShell console background color

$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

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

Setting Powershell colors with hex values in profile script

答案 2 :(得分:2)

我为Windows控制台颜色设置了一个名为Concfg的实用程序。

它可以从JSON预设文件中导入颜色,并负责从注册表和.lnk文件中删除覆盖。

相关问题