【问题标题】:Powershell enum parametersPowershell 枚举参数
【发布时间】:2014-07-05 10:26:46
【问题描述】:
[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

【问题讨论】:

    标签: powershell enums parameter-passing


    【解决方案1】:

    只需将您的变量设为数组,它就可以正常工作。给定以下函数:

    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。

    【讨论】:

    • 抱歉,做了一个小修改。您的回复几乎与我的相同,但只有第一个参数是 tab 完成的。或者这就是它的极限?
    • 你没有包含实际的参数定义,所以我不知道。如果您使用的是 PowerShell ISE 并期望下拉列表,您必须按 CTRL+SPACE 才能获得其他条目的下拉列表,但按 Tab 循环浏览选项应该在 PowerShell 控制台和PowerShell ISE(至少在我的电脑上都可以)。
    • 你确实是对的。我很抱歉。嗯,我没有表现出相同的行为。 CTRL+SPACE 确实会拉下一个下拉菜单,但是在选择第一个枚举值之后,即使我正在尝试填充一个数组,也不能对同一参数使用其他枚举值。
    • 你在两个值之间添加了逗号?
    猜你喜欢
    • 2020-10-12
    • 2010-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-13
    • 2011-02-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多