如果您有多个参数在调用命令或脚本时需要一个值,我知道您可以像这样传递它:
$parameters = @{
name = "John"
last_name = "Doe"
}
Run Code Online (Sandbox Code Playgroud)
但是,如果命令或脚本实际上只是希望-T指示诸如标志之类的东西,但参数本身不需要值。如何在变量中设置它?
$optionalT = ""
if ($itNeedsTheT) $optionalT = "-T"
command $optionalT
Run Code Online (Sandbox Code Playgroud)
如果我这样做,它会抱怨以下消息:
Unknown argument 'T' on command line.
Run Code Online (Sandbox Code Playgroud) 在下面的示例中,我有一个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)
问题
上述是处理这种情况的正确方法,还是存在更清晰的选项?