powershell - 我可以使用 splatting 将参数传递给非 powershell 可执行文件吗?

标签 powershell

我可以做这样的事情吗?

$splatting_table = @{
   "-parameter" = "value"
   "-parameter2" = "value2"
}
.\external-command.exe @splatting_table

作为等价于
.\external-command.exe -parameter value -parameter2 value2

最佳答案

虽然技术上可以为 splatting 使用哈希表对于外部程序,它很少能按预期工作。 [1]

相反,使用数组:

$splatting_array = 
   '-parameter', 'value',
   '-parameter2', 'value2'

.\external-command.exe @splatting_array

请注意 $splatting_array只是一个平面数组 - 格式化为元素对的可读性 - 其元素 PowerShell 作为单独的参数传递。

[1] 对于基于哈希表的 splatting,不包括 -键名中的符号(例如,使用 parameter ,而不是-parameter );除此之外,PowerShell 将使用 : 加入您的条目。为外部程序构建命令行时,很少有程序支持;例如,哈希表条目 parameter = 'value'翻译成-parameter:value .

关于powershell - 我可以使用 splatting 将参数传递给非 powershell 可执行文件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61178950/

相关文章:

PowerShell:引用带有空格的属性

xml - 从命令行修改 XML

powershell - 如何使用foreach脚本锁定Azure资源组中的所有资源

Powershell - 捕获关键字之间的所有非空行

powershell - 如何使用 Where-Object/Wildcards 匹配多个字符串?

Powershell v2 函数返回 System.Object[] 而不是 PSCustomObject

windows - 使用 powershell 在远程计算机上启动 .exe 文件

powershell - Where-Object 子句中的函数

powershell - Powershell 中 Select-String 方法的 "line"由什么构成?

powershell - 在 PowerShell 中将参数传递给 $webclient.DownloadFile()