PowerShell函数和变化的参数

时间:2015-02-20 08:36:12

标签: function powershell arguments

在我的脚本的早期,我检查以确定在运行脚本时是否使用了参数“-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参数。我相信这是一个非常简单的问题,但是我对我所拥有的函数知识无法理解。

1 个答案:

答案 0 :(得分:2)

在PowerShell V3中,您可以使用splatting:

Function Silent-Write
{
    if (!$silent) {
        Write-Host @args
    }
}

Silent-Write -ForegroundColor red "hello"