Joh*_*van 3 powershell switch-parameter
在下面的示例中,我有一个IF语句来确定递归Demo调用时发送到哪些参数。如果$y是布尔值而不是开关,我可以简单地调用Demo -x $x -y $y; 但作为一个开关,这不是一个可行的选择。
function Demo {
[CmdletBinding()]
param (
[int]$x
,[switch]$y
)
process {
$x--
if ($x -gt 0) {
"$x - $($y.IsPresent)"
if($y.IsPresent) {
Demo -x $x -y
} else {
Demo -x $x
}
}
}
}
Demo 10 -y
Demo 10
Run Code Online (Sandbox Code Playgroud)
问题
上述是处理这种情况的正确方法,还是存在更清晰的选项?
您可以通过像这样调用它来强制切换参数:(-Switch:$true在大多数情况下是多余的)-Switch:$false对于您的示例来说:
Demo -y:$y
Run Code Online (Sandbox Code Playgroud)
顺便说一下,在这个例子中,你还可以使用splatting:
Demo @PSBoundParameters
Run Code Online (Sandbox Code Playgroud)
但您的帖子显然是 MVCE,因此这可能不适用于您实际正在做的事情,或者可能需要修改,特别是如果您对某些参数有默认值(完整披露:我的博客)。
| 归档时间: |
|
| 查看次数: |
334 次 |
| 最近记录: |