Как программно установить цвет фона Powershell в значение RGB
текущий выбор 16 цветов из цветов консоли не является правильным выбором для меня. Я хотел бы использовать гораздо более темные варианты этих для фона.
Я мог бы определенно установить их с помощью пользовательского интерфейса и изменить значение RGB там.
например, я мог бы выбрать темно-синий и выбрать 65 для синего в разделе RGB (128 по умолчанию). Может кто-нибудь сказать мне, как это сделать программно.
что-то например:
(Get-Host).UI.RawUI.BackgroundColor=DarkBlue
но с дополнительными опциями.
3 ответов
этот старый пост ли Холмса объясняет, как вы можете изменить цвет на любое значение, которое вы хотите. Вы должны изменить реестр -http://www.leeholmes.com/blog/2008/06/01/powershells-noble-blue/
Push-Location
Set-Location HKCU:\Console
New-Item ".\%SystemRoot%_system32_WindowsPowerShell_v1.0_powershell.exe"
Set-Location ".\%SystemRoot%_system32_WindowsPowerShell_v1.0_powershell.exe"
New-ItemProperty . ColorTable00 -type DWORD -value 0×00562401
New-ItemProperty . ColorTable07 -type DWORD -value 0x00f0edee
New-ItemProperty . FaceName -type STRING -value "Lucida Console"
New-ItemProperty . FontFamily -type DWORD -value 0×00000036
New-ItemProperty . FontSize -type DWORD -value 0x000c0000
New-ItemProperty . FontWeight -type DWORD -value 0×00000190
New-ItemProperty . HistoryNoDup -type DWORD -value 0×00000000
New-ItemProperty . QuickEdit -type DWORD -value 0×00000001
New-ItemProperty . ScreenBufferSize -type DWORD -value 0x0bb80078
New-ItemProperty . WindowSize -type DWORD -value 0×00320078
Pop-Location
эта функция powershell имитирует
вызов строки cmd:
цвет В0
function color ($bc,$fc) {
$a = (Get-Host).UI.RawUI
$a.BackgroundColor = $bc
$a.ForegroundColor = $fc ; cls}
цвета "бирюзовый", "черный"
имена цветов Powershell:
Черный Белый
Серый Темно-Серый
Красный Темно-Красный
Синий Темно-Синий
Зеленый Темно-Зеленый
Желтый DarkYellow
Голубой Шоколад
Magenta DarkMagenta
Я добавил эту функцию в свой профиль powershell, так как есть программа, которая регулярно портит цвета моей оболочки.
$DefaultForeground = (Get-Host).UI.RawUI.ForegroundColor
$DefaultBackground = (Get-Host).UI.RawUI.BackgroundColor
function SetColors
{
Param
(
[string]$Foreground = "",
[string]$Background = ""
)
$ValidColors = "black","blue","cyan","darkblue" ,"darkcyan","darkgray",
"darkgreen","darkmagenta","darkred","darkyellow","gray","green",
"magenta","red","white","yellow";
$Foreground = $Foreground.ToLower()
$Background = $Background.ToLower()
if ( $Foreground -eq "" )
{
$Foreground = $DefaultForeground
}
if ( $Background -eq "" )
{
$Background = $DefaultBackground
}
if ( $ValidColors -contains $Foreground -and
$ValidColors -contains $Background )
{
$a = (Get-Host).UI.RawUI
$a.ForegroundColor = $Foreground
$a.BackgroundColor = $Background
}
else
{
write-host "Foreground/Background Colors must be one of the following:"
$ValidColors
}
}
set-alias set-colors SetColors
некоторые замечания:
" $DefaultCololrs = (Get-Host).ПОЛЬЗОВАТЕЛЬСКИЙ ИНТЕРФЕЙС.RawUI" создает больше объекта типа указателя, чем фактическую копию объекта. Это означает, что если вы позже установите другую переменную, равную "(Get-Host).ПОЛЬЗОВАТЕЛЬСКИЙ ИНТЕРФЕЙС.RawUI", и изменить вещи, $DefaultColors также изменится (именно поэтому я сделал обязательно скопируйте их здесь как строки).
Я попытался установить другие цвета (используя шестнадцатеричные коды) с очень небольшой удачей, хотя я нашел настройка цветов Powershell с шестнадцатеричными значениями в скрипте профиля (Я просто еще не пробовал, так как я не особенно люблю возиться в реестре, и список цветов по умолчанию казался довольно достаточным).
Я также нашел этот документ:https://technet.microsoft.com/en-us/library/ff406264.aspx, который мне, возможно, придется использовать позже, чтобы выяснить, как изменить мою команду "grep" (в настоящее время у меня есть псевдоним для select-string)