在我的脚本的早期,我检查以确定在运行脚本时是否使用了参数“-Silent”。我的想法是从脚本输出零,如果它是,我将在稍后的每个Write-Host条目上检查它。在每个单个Write-Host上制作if-else语句似乎有点沉重,所以我决定使用一个函数 - 像这样:
Function Silent-Write ([string]$arg1)
{
if ($silent -eq $false) {
if ($args -ieq "-nonewline") {
Write-Host "$arg1" -NoNewLine
}
elseif ($args -ieq "-foregroundcolor") {
Write-Host "$arg1" -ForegroundColor $args
}
else {
Write-Host "$arg1"
}
}
}
Silent-Write -ForegroundColor red "hello"
这不起作用,但你明白了;除了传递我想要输出的文本之外,Silent-Write函数还应该考虑其他Write-Host参数。我相信这是一个非常简单的问题,但是我对我所拥有的函数知识无法理解。
答案 0 :(得分:2)
在PowerShell V3中,您可以使用splatting:
Function Silent-Write
{
if (!$silent) {
Write-Host @args
}
}
Silent-Write -ForegroundColor red "hello"