提问人:Nigel Davies 提问时间:12/27/2022 最后编辑:Nigel Davies 更新时间:12/28/2022 访问量:104
(,$arrr) 是将单个数组作为参数列表传递给 powershell invoke-command cmdlet 的最佳方法吗?[复制]
Is (,$arrr) the best way to pass a single array as an argument list to a powershell invoke-command cmdlet? [duplicate]
问:
这个问题在这里已经有答案了:
如何使用 Invoke-Command 传递命名参数? (5 个答案)
11个月前关闭。
这篇文章是在 11 个月前编辑并提交审核的,但未能重新打开该帖子:
原始关闭原因未解决
我想将数组传递给 PowerShell 脚本块。这是公认的方法:
$arr = 1..4;
invoke-command -ScriptBlock { Param($li); $li | %{$_}} -ArgumentList (,$arr)
根据我的调查,这些替代方案也有效:
invoke-command -ScriptBlock { Param($li); $li | %{$_}} -ArgumentList $arr,$arr
invoke-command -ScriptBlock { Param($li); $li | %{$_}} -ArgumentList $arr,$null
当使用列出这个时,同样的问题也适用
$arr = 1..4;
$sb = { Param($li); $li | %{$_}}
$sb.Invoke((,$arr))
我理解 (,$arr) 语法的原因是 -ArgumentList 参数期望将参数数组传递给脚本块,如果它获得单个数组作为其值,它将解压缩数组并将内容作为多个参数传递给脚本块。我认为这些答案如何以及为什么帮助我度过了难关。
公认的解决方案在我看来非常丑陋,我想知道有一种更干净的方法可能更接近 PowerShell 设计者的意图。请发表评论。
也许答案是
& $sb $arr.
请发表评论。
答: 暂无答案
上一个:远程变量
评论
Invoke-Command
$using:
更简单,但适用于远程会话