参数集作为选项
ParameterSet as an option
接下来是objective(对于参数集)。我是参数集概念的新手,我无法弄清楚。
- 同时选择开关
$opt1
和开关 $opt2
,不正常!
- 开关
$opt1
已选择,OK!
- 开关
$opt2
已选中,OK!
- 没有选择开关,好的!
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!"满足。
接下来是objective(对于参数集)。我是参数集概念的新手,我无法弄清楚。
- 同时选择开关
$opt1
和开关$opt2
,不正常! - 开关
$opt1
已选择,OK! - 开关
$opt2
已选中,OK! - 没有选择开关,好的!
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!"满足。