前面と背面の色の複数のセットを使用して1行のテキストを出力するPowerShell関数を作成しようとしています。カラーセットを定義するスイッチがあります。
この関数には、スイッチ値を定義する1つのパラメーターと、これを機能させることができる場合は、同じスイッチを使用して次のカラーセットを定義する別のパラメーターがあります。
function Write-Custom
{
param($Say,$ThenSay,$Level,$ExtraLevel)
switch([array]$level)
{
none {$c = 'Black','White'}
name {$c = 'Cyan','DarkBlue'}
good {$c = 'White','DarkGreen'}
note {$c = 'Gray','White'}
info {$c = 'White','DarkGray'}
warn {$c = 'Yellow','Black'}
fail {$c = 'Black','Red'}
}
$s = " $Say"
$ts = " $ThenSay "
Write-Host $s -ForegroundColor $c[0] -BackgroundColor $c[1] -NoNewLine
Clear-Variable Level
$Level = $ExtraLevel
Write-Host $ts -ForegroundColor $c[0] -BackgroundColor $c[1]
}
Write-Custom -Say 'hi there' -Level 'name' -ThenSay 'stranger ' -ExtraLevel 'warn'
$level変数をクリアして再定義できないようです。出力「こんにちは」はシアン/ダークブルーの前景/背景を持ち、「見知らぬ人」の部分は黄色/黒である必要があるようですが、文字列全体がシアン/ダークブルーになります。
より複雑なスイッチを作成する必要がありますか?