作者:1712477436 | 来源:互联网 | 2022-12-04 16:31
我试图有条件地向我正在调用的命令添加参数powershell
.但是,当我尝试时,我的参数将作为字符串传递.我无法弄清楚如何将其作为标识符传递.
这是我到目前为止的尝试:
$readParams = $(if ("2".Equals("2")) {"-AsSecureString"})
read-host 'Prompt' $readParams
我得到的输出是:
Prompt -AsSecureString:
我希望能够$readParams
根据条件进行不同的设置.如果条件为true,则会出现以下行为:
read-host 'Prompt' -AsSecureString
如果条件为false,请执行以下操作:
read-host 'Prompt'
我只想read-host
在我的程序中写一次.
如何动态指定参数而不将其作为字符串传递,使其成为提示的一部分而不是作为标识符样式参数传递?
1> Mike Shepard..:
您正在寻找的功能称为splatting.它允许您向命令提供哈希表并将其解释为参数.
$readParams=@{}
if("2".Equals("2")) {
$readParams["AsSecureString"]=$true
}
read-host 'Prompt' @readParams
更简单`$ readParams = @ {AsSecureString =("2".Equals("2"));提示='提示'}`和`$ input = Read-Host @ readParams`(+1)
@LotPings停止使用`$ input`作为变量名.它是一个自动变量,应该被视为只读.