Попытка создать функцию 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. Кажется, вывод «привет» должен иметь передний план/фон голубого/темно-синего цвета, а часть «незнакомца» должна быть желтой/черной... но вся строка выходит голубого/темно-синего цвета.
Нужно ли создавать более сложный переключатель?