When I run Python from a traditional PowerShell window, some of the colored output—especially red and blue text—has very poor contrast and is difficult to read. Changing the basic text color through the window properties does not affect these other color categories, and editing the console ColorTable00 through ColorTable15 registry values did not help either. An older Microsoft ColorTool utility also failed to run on my Windows 10 system. Using Windows Terminal solves the problem because it supports readable color schemes, but I would like to know whether there is a working way to change all PowerShell colors in the original console host, or whether Python can be configured to use different colors.
3 Answers
Windows Terminal is generally the easiest fix. It is a console host that can run PowerShell, Command Prompt, and other shells, rather than being a replacement for PowerShell itself. Its profiles support complete color schemes, tabs, and better rendering, so you can adjust the contrast without fighting the legacy console settings. You can also set it as the default console host if you want PowerShell sessions to open there automatically.
The registry color table and the basic window-properties dialog do not control every color PowerShell uses. PowerShell has its own semantic colors for errors, warnings, verbose output, and so on, which is why those changes did not affect the problematic text. If you stay with the old host, use $Host.PrivateData; otherwise, a modern Windows Terminal profile is the more maintainable solution. Also keep in mind that Windows 10 is out of support, and newer Windows versions use Windows Terminal more prominently by default.
In the old console host, PowerShell exposes its color settings through the $Host variable. You can inspect them with:
$Host.PrivateData | Format-List *
For example, to make errors cyan instead of red:
$Host.PrivateData.ErrorForegroundColor = 'Cyan'
Put the setting in your PowerShell profile so it is applied whenever a new session starts. This approach works with the traditional console host, though it is not the way to configure Windows Terminal itself.
That is exactly the kind of setting I was looking for. Saving it in the profile should make the change persistent.

Some older hardware cannot move to Windows 11, but Windows Terminal can still be installed separately on many Windows 10 systems. It is worth trying even if upgrading the operating system is not possible.