ParameterSet作为选项

时间:2017-05-24 23:31:49

标签: powershell powershell-v4.0

遵循目标(针对参数集)。我是关于参数集概念的新手,我无法弄明白。

  • 切换$opt1并切换$opt2选择TOGETHER,不行!
  • 选择
  • 切换$opt1,确定!
  • 选择
  • 切换$opt2,确定!
  • 未选择开关,确定!
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个场景除最后一个外都有效。请帮助我在哪里弄错了。

1 个答案:

答案 0 :(得分:0)

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

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

将上面的行添加到代码中。第四个条件“没有选择开关,OK!”很满意。