首页 > 解决方案 > 如何将字符串作为非字符串传递给powershell中的命令?

问题描述

我正在尝试有条件地将参数添加到我正在调用的命令中powershell。但是,当我尝试时,我的参数作为字符串传递。我不知道如何将它作为标识符传递。

这是我迄今为止的尝试:

$readParams = $(if ("2".Equals("2")) {"-AsSecureString"})
read-host 'Prompt' $readParams

我得到的输出是:

Prompt -AsSecureString:

我希望能够$readParams根据条件进行不同的设置。如果条件为真,则获得此行为:

read-host 'Prompt' -AsSecureString

如果条件为假,则获得此行为:

read-host 'Prompt'

我只想read-host在我的程序中写一次。

如何动态指定参数而不将其作为字符串传递,这会导致它成为提示的一部分而不是作为标识符样式参数传递?

标签: powershell

解决方案


您正在寻找的功能称为splatting。它允许您将哈希表呈现给命令并将其解释为参数。

$readParams=@{}
if("2".Equals("2")) {
  $readParams["AsSecureString"]=$true
}
read-host 'Prompt' @readParams

推荐阅读