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

sch*_*ine 8 powershell

我可以做这样的事情吗?

$splatting_table = @{
   "-parameter" = "value"
   "-parameter2" = "value2"
}
.\external-command.exe @splatting_table
Run Code Online (Sandbox Code Playgroud)

作为等价于

.\external-command.exe -parameter value -parameter2 value2
Run Code Online (Sandbox Code Playgroud)

mkl*_*nt0 8

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

相反,使用数组

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

.\external-command.exe @splatting_array
Run Code Online (Sandbox Code Playgroud)

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


[1] 对于基于哈希表的展开,不要-键名称中包含印记(例如, use parameter、 not
-parameter);除此之外,PowerShell 会:在为外部程序构建命令行时将您的条目与 结合起来,很少有程序支持这一点;例如,哈希表条目parameter = 'value'转换为
-parameter:value.