标签: switch-parameter

如何通过 PowerShell 中的 splatting 将开关参数作为变量传递?

如果您有多个参数在调用命令或脚本时需要一个值,我知道您可以像这样传递它:

$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)

variables powershell switch-parameter parameter-splatting

7
推荐指数
2
解决办法
1954
查看次数

使用 SWITCH 参数进行递归调用的最佳方法是什么?

在下面的示例中,我有一个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)

问题

上述是处理这种情况的正确方法,还是存在更清晰的选项?

powershell switch-parameter

3
推荐指数
1
解决办法
334
查看次数