Powershell枚举参数

Ste*_*afa 3 powershell enums parameter-passing

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

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

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

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

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

为了完整性,我正在使用PS 4.0和PSCX 3.1也已安装

Rob*_*und 7

只需使你的变量成为一个数组,它就可以了.鉴于以下功能:

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

    foreach($value in $MyParam)
    {
        Write-Host "Parameter given: $value"
    }
}
Run Code Online (Sandbox Code Playgroud)

对于上面的方法,我得到tabMyParam参数的完成.要为参数输入数组,只需使用逗号字符分隔值.

Test-ValidateSet -MyParam Val1, Val2, Val3
Run Code Online (Sandbox Code Playgroud)

这支持tabPowerShell控制台和PowerShell ISE中的完成.