【发布时间】:2013-02-15 22:46:43
【问题描述】:
尝试创建一个 PowerShell 函数,该函数将使用多组前后颜色输出单行文本。我有一个定义颜色集的开关。
该函数有一个定义开关值的参数和另一个参数,如果我可以让它工作,则使用相同的开关定义下一个颜色集:
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 变量。似乎输出“你好”的前景/背景应该是青色/深蓝色,“陌生人”部分是黄色/黑色……但整个字符串都是青色/深蓝色。
我需要创建一个更精细的开关吗?
【问题讨论】:
标签: function powershell switch-statement string-formatting