PowerShell通过为其16种控制台颜色之一( - 由于某种原因称为DarkMagenta)指定一个蓝色值,改进了(坦率地)非常丑陋的Windows控制台颜色方案,并将其用作默认屏幕背景。 / p>
我想以编程方式将16种颜色中的每种颜色更改为自定义颜色方案。例如,在我的PowerShell配置文件中。
我已经找到了关于如何更改ConsoleHost的16种颜色中的哪一种被分配给不同种类的文本的解释,但我想要的是实际上将ConsoleHost的16种颜色中的每一种颜色更改为不同的十六进制值。 (仅适用于我自己,不适用于其他用户或其他控制台,例如cmd.exe
。)
当然,这可以通过右键单击菜单栏并手动调整“属性”或“默认”设置来完成,但这会很快累。我找不到这些设置的持久性。
(我已经搜索了注册表和C:\Users\<current_user>\AppData
,除ColorTable##
下的HKCU:\Console
属性外,什么都没找到,其范围明显比PowerShell控制台设置更广。)< / p>
如果有人可以提供帮助,我们将不胜感激。
答案 0 :(得分:9)
控制台颜色在多个位置定义:
HKCU:\Console
。这适用于所有conhost.exe
- 应用程序,包括cmd.exe
和powershell.exe
。HKCU:\Console\<PROCESS_PATH_WITH_UNDESCORE>
,用于特定流程的更改。防爆。 HKEY_CURRENT_USER\Console\%SystemRoot%_System32_WindowsPowerShell_v1.0_powershell.exe
已定义,已修改ColorTable05
和ColorTable06
。您可以使用以下方法修改过程级别值:
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
还有关于该主题的另一个讨论:
答案 2 :(得分:2)
我为Windows控制台颜色设置了一个名为Concfg的实用程序。
它可以从JSON预设文件中导入颜色,并负责从注册表和.lnk文件中删除覆盖。