powershell - 如何将字符串作为非字符串传递给powershell中的命令?
问题描述
我正在尝试有条件地将参数添加到我正在调用的命令中powershell
。但是,当我尝试时,我的参数作为字符串传递。我不知道如何将它作为标识符传递。
这是我迄今为止的尝试:
$readParams = $(if ("2".Equals("2")) {"-AsSecureString"})
read-host 'Prompt' $readParams
我得到的输出是:
Prompt -AsSecureString:
我希望能够$readParams
根据条件进行不同的设置。如果条件为真,则获得此行为:
read-host 'Prompt' -AsSecureString
如果条件为假,则获得此行为:
read-host 'Prompt'
我只想read-host
在我的程序中写一次。
如何动态指定参数而不将其作为字符串传递,这会导致它成为提示的一部分而不是作为标识符样式参数传递?
解决方案
您正在寻找的功能称为splatting。它允许您将哈希表呈现给命令并将其解释为参数。
$readParams=@{}
if("2".Equals("2")) {
$readParams["AsSecureString"]=$true
}
read-host 'Prompt' @readParams
推荐阅读
- java - JPanel的平滑圆角
- spring-mvc - 无法在 Runnable 或 Spring 控制器中实例化 EWS ExchangeService
- javascript - 我不太明白reduce方法的逻辑
- python - 在 pyqt5 中使用按钮在选项卡之间切换
- node.js - 我在获取 api 时遇到网络错误。如何解决此错误?
- javascript - 轮播与图像大小相同
- java - 如何在数据库中找不到某些数据时为异常场景编写Junit测试
- javascript - 更改全局变量时重新渲染 React 组件
- javafx - 如何防止primaryStage在用户从javafx对话框中选择一个选项之前关闭?
- python - tkinter 回调中的异常:失败,退出代码 3221225781