参数集作为选项

ParameterSet as an option

接下来是objective(对于参数集)。我是参数集概念的新手,我无法弄清楚。

function Mytest {
    Param(
        [Parameter(Mandatory=$false)][string]$intro="ParameterSet Practice",
        [Parameter(Mandatory=$false, ParameterSetName='option1')][switch]$opt1,
        [Parameter(Mandatory=$false, ParameterSetName='option2')][switch]$opt2
    )

    Write-Verbose "$intro" -Verbose
    if ($opt1) {
        "You picked option 1!"
    } elseif ($opt2) {
        "You picked option 2!"
    } else {
        "You didn't pick an option!"
    }
}

除了最后一个,前 3 个场景都有效。求大神指点我是哪里弄错了

只有在我发布问题后,我才想通了。我不知道我必须设置默认参数,解决方案如下:

function Mytest {
    param(
        [CmdletBinding(DefaultParameterSetName="noOption")]
        ...
}

在上面的行添加到代码之后。第四个条件"No switch selected, OK!"满足。