10

Console Colors の現在の 16 色の​​選択は、私にとって正しい選択ではありません。背景には、これらのより暗いバリアントを使用したいと思います。

UI を使用してこれらを設定し、そこで RGB 値を変更することは間違いありません。

青を選択し、値を 65 に変更

たとえば、Darkblue を選択し、RGB セクションで Blue に 65 を選択できます (128 がデフォルトです)。プログラムでこれを行う方法を教えてください。

何かのようなもの:

(Get-Host).UI.RawUI.BackgroundColor=DarkBlue

ただし、追加のオプションがあります。

4

3 に答える 3

11

Lee Holmes によるこの古い投稿では、色を任意の値に変更する方法について説明しています。レジストリを変更する必要があります - 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
于 2013-09-08T16:35:23.993 に答える
4

シェルの色を定期的に台無しにするプログラムがあるため、この関数を 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).UI.RawUI」は、オブジェクトの実際のコピーよりも多くのポインタ型オブジェクトを作成します。これは、後で別の変数を"(Get-Host).UI.RawUI"に設定して変更すると、 $DefaultColors も変更されることを意味します (これが、ここでそれらを文字列としてコピーした理由です)。

他の色を (16 進コードを使用して) 設定しようとしましたが、プロファイル スクリプトで 16 進値を使用して Powershell の色を設定することを見つけました(私はまだ試していません。レジストリ、およびデフォルトの色のリストで十分なようです)。

また、次のドキュメントも見つけました: https://technet.microsoft.com/en-us/library/ff406264.aspx、後で「grep」コマンドを変更する方法を理解するために使用する必要がある場合があります (現在、エイリアスが付けられています)文字列を選択する)

于 2016-06-22T18:48:17.033 に答える