我想调用具有动态数量参数的现有命令行开关。
所以不要这样做(以写主机为例),我想以聪明的方式去做。
# these are the dynamic parameters which maybe get passed into my function or script
# they would be $null be default of course
$forecolor = 'Green'
$newline = $true
# now build the "dynamic" write-host...
if ($forecolor) {
if ($newline) {
write-host -fore $forecolor "Hello world"
}
else {
write-host -fore $forecolor "Hello world" -nonewline
}
}
else {
if ($newline) {
write-host "Hello world"
}
else {
write-host "Hello world" -nonewline
}
}
这当然非常难看。帮助我让它更漂亮!
我已经尝试过只设置$forecolor = '-fore Green'
,只输出“ - 绿色Hello Hello世界”。我可以想到将一个参数列表传递给一个函数,并为列表中的每个参数添加相应的参数 - 我只是不知道如何保存参数。
答案 0 :(得分:17)
您可以将变量作为参数传递给Write-Host
:
Write-Host -Fore $forecolor -NoNewLine:(!$newline) 'Hello World'
对于真正动态的方式,您可以使用哈希表:
$params = @{ NoNewLine = $true; ForegroundColor = 'Green' }
然后使用splat运算符
Write-Host @params Hello World
您可以在调用Write-Host
之前将参数及其值添加到哈希表中。