Powershell枚举参数

时间:2014-05-16 20:42:14

标签: powershell enums parameter-passing

[Parameter (Mandatory=$False)]
[ValidateSet("Val1", "Val2", "Val3", "Val4", "Val5",ignorecase=$true)]
[string[]] $configs = ""

有没有办法改变上面的内容,以便我可以一次接受几个枚举值?

我希望能够像这样启动脚本:

。\ MyAwesome-Script.ps1 -config Val1 Val2(或枚举值的任意组合作为参数)

但是我需要这个也是标签完整的(甚至一个字?)

为了完整性,我正在使用PS 4.0,并且还安装了PSCX 3.1

1 个答案:

答案 0 :(得分:7)

只需将变量设为数组,它就可以正常工作。鉴于以下功能:

function Test-ValidateSet
{
    PARAM(
        [ValidateSet("Val1", "Val2", "Val3")]
        [string[]]$MyParam
    )

    foreach($value in $MyParam)
    {
        Write-Host "Parameter given: $value"
    }
}

对于上述方法,我在MyParam参数上得到 tab -completion。要输入参数的数组,只需用逗号字符分隔值。

Test-ValidateSet -MyParam Val1, Val2, Val3

这支持PowerShell控制台和PowerShell ISE中的 tab -completion。