Невозможно изменить цвета консоли - PullRequest
3 голосов
/ 10 марта 2020

Я пытался использовать их для настройки консоли PowerShell, но все они кажутся сломанными. BackgroundColor становится черным, но как только я набираю что-то вроде dir, все снова появляется на синем фоне по умолчанию. Я делал довольно много поисков в сети и не могу найти способ просто изменить это. Знаете ли вы, как изменить консоль, чтобы я мог удерживать BackgroundColor?

$Shell = $Host.UI.RawUI
$Shell.BackgroundColor = "Black"
$Shell.ForegroundColor = "White"
$Shell.CursorSize = 10

На этой странице предлагается добавить эти значения в $profile, чтобы они оставались в сеансе консоли, но это не работает. https://4sysops.com/wiki/change-powershell-console-syntax-highlighting-colors-of-psreadline/

Существует ли какая-либо другая функция PSReadLine (возможно, опция PS v5.1), которая позволяет постоянно фиксировать цвета консоли в сеансе?

* Set-PSReadLineOption options have changed
  - To specify colors, use the new `-Color` parameter and pass a Hashtable

https://www.powershellgallery.com/packages/PSReadLine/2.0.0-beta1/Content/Changes.txt

Нет примеров того, как изменить цвет фона, хотя ...

1 Ответ

0 голосов
/ 10 марта 2020

Существуют стандартные цвета и настройки консоли по умолчанию, которые отличаются от конфигов PSReadline

«Цвета консоли остальных PowerShell»

$host.PrivateData
<#
# Results

...
ErrorForegroundColor                      : #FFFF0000
ErrorBackgroundColor                      : #00FFFFFF
WarningForegroundColor                    : #FFFF8C00
WarningBackgroundColor                    : #00FFFFFF
VerboseForegroundColor                    : #FF00FFFF
VerboseBackgroundColor                    : #00FFFFFF
DebugForegroundColor                      : #FF00FFFF
DebugBackgroundColor                      : #00FFFFFF
ConsolePaneBackgroundColor                : #FF012456
ConsolePaneTextBackgroundColor            : #FF012456
ConsolePaneForegroundColor                : #FFF5F5F5
ScriptPaneBackgroundColor                 : #FF1E1E1E
ScriptPaneForegroundColor                 : #FFD4D4D4
...
#>

[System.Enum]::GetValues('ConsoleColor')
<#
# Results

Black
DarkBlue
DarkGreen
DarkCyan
DarkRed
DarkMagenta
DarkYellow
Gray
DarkGray
Blue
Green
Cyan
Red
Magenta
Yellow
White
#>


[System.Enum]::GetValues('ConsoleColor') | 
ForEach-Object { Write-Host $_ -ForegroundColor $_ }
<#
# Results

DarkGreen
DarkCyan
DarkRed
DarkMagenta
DarkYellow
Gray
DarkGray
Blue
Green
Cyan
Red
Magenta
Yellow
White
#>

# Setting console color
$host.PrivateData.ErrorBackgroundColor = "White"

Сброс цвета консоли - Метод Console.ResetColor

[Console]::ResetColor()

# Playing with colors
foreach($color1 in (0..15))
{
    foreach($color2 in (0..15))
    {Write-Host -ForegroundColor ([ConsoleColor]$color1) -BackgroundColor ([ConsoleColor]$color2) -Object "X" -NoNewline}

    Write-Host 
}

Кто-то однажды сказал:

PowerShell 5.0 на Windows 10 поставляется с большим количеством улучшенная и красочная консоль PowerShell. PowerShell 5.0 в других операционных системах просто имеет унылую стандартную консоль.

Это связано с тем, что усовершенствования консоли происходят от модуля под названием «PSReadLine». Если вы установили PowerShellGet (который всегда является частью PowerShell 5.0 и может быть загружен с www.powershellgallery.com для более старых версий PowerShell), вы можете загрузить этот модуль и превратить свою консоль в красочного зверя:

# download and install the module
Install-Module PSReadLine -Scope CurrentUser

# load the module to turn on the colors
# this could be done automatically in your $profile script
Import-Module PSReadline

Однако PSReadline теперь входит в дистрибутивы PowerShell по умолчанию, загрузка не требуется. ТАК, есть вопрос приоритета, основанный на конфигурации, которую вы выбираете. Вы можете отключить PSReadline, чтобы проверить, действительно ли это PSReadline в качестве root случая или по умолчанию PowerShell.

Set-PSReadLineOption

Set- PSReadLineOption [-EditMode] [-ContinuationPrompt] [-HistoryNoDuplicates] [-AddToHistoryHandler]
[-HistorySearchCursorMovesToEnd] [-MaximumHistoryCount]
[-MaximumTxtTingCingCillCillSillSill
[-DingDuration] [-BellStyle]
[-CompletionQueryItems] [-WordDelimiters]
[-HistorySearchCaseSensitive] [-HistorySaveStyle] [-HistorySavePath]
[-AnsTextEscape] * [-ViModeIndicator] [-ViModeChangeHandler] [-Colors] []

...