PowerShellでのホスト表示にはいくつかの方法があります。
その中で、ホスト表示色を自由に扱えるのが、
Write-Host
コマンドレットです。
その利用例を見てみましょう。
Write-Host コマンドレット
Write-Host コマンドレットには、 ForeGroundColor パラメータと BackGroundColor パラメータがあります。
これを利用することで、表示文字色、表示背景色を制御できます。
特に指定しなかった場合は、デフォルト色となります。
利用可能な色一覧:
Black
Blue
Cyan
DarkBlue
DarkCyan
DarkGray
DarkGreen
DarkMagenta
DarkRed
DarkYellow
Gray
Green
Magenta
Red
White
Yellow
例: 表示文字色をCyanとする
Write-Host "hogehoge cyan!!" -ForegroundColor Cyan
[office src="
https://skydrive.live.com/embed?cid=D0D99BE0D6F89C8B&resid=D0D99BE0D6F89C8B%211729&authkey=AN3GIxwEqPZ8Qpo" width="316" height="41"]
背景色も同様に変更可能です。
Write-Host "Gray top, yellow back!" -ForegroundColor Black -BackgroundColor Yellow
[office src="
https://skydrive.live.com/embed?cid=D0D99BE0D6F89C8B&resid=D0D99BE0D6F89C8B%211730&authkey=AMVvFqE266CClfU" width="316" height="30"]
事前に定義する
psm1など、function内でちょくちょく使う場合は、事前に組み合わせを定義しておくのもいいでしょう。
例えばこのような感じです。
function Get-WriteHostColourSplat{
[CmdletBinding()]
param(
)
Write-Verbose "Set Colour Splat Definition"
# Create Colour Splats
$green = @{ForegroundColor= "Green"}
$white = @{ForegroundColor= "White"}
$yellow = @{ForegroundColor= "Yellow"}
$red = @{ForegroundColor= "red"}
$cyan = @{ForegroundColor= "cyan"}
Write-Verbose "Set Colour Splat variables for function scope."
# Create Colour constants in the previous scope.
New-Variable -Name "message" -Value $green -Scope 1
New-Variable -Name "normal" -Value $white -Scope 1
New-Variable -Name "warning" -Value $yellow -Scope 1
New-Variable -Name "caution" -Value $cyan -Scope 1
New-Variable -Name "notice" -Value $cyan -Scope 1
}
このようにしておけば、利用時はalias指定した名称でスプラット指定するだけです。
設定を読み込んで
Get-WriteHostColourSplat
試します。
Write-Host "hoge" @caution
[office src="
https://skydrive.live.com/embed?cid=D0D99BE0D6F89C8B&resid=D0D99BE0D6F89C8B%211731&authkey=AA_OzVMr4Sm7NJ0" width="320" height="317"]
まとめ
閾値などの表示には、色別表示が便利ですね。
しかし、Write-Host には重大な欠点が……そのため結局使わないことが多いのでした.... それはまた今度で。