powershell – 为什么在invoke-commands参数列表中作为参数传递的scriptblock失败?

function test-scriptblock {
1..10 }
function caller ([scriptblock]$runthis) {
& $runthis
}

以下工作正常.

caller -runthis ${function:test-scriptblock}

这不起作用

invoke-command -ComputerName localhost -ScriptBlock ${function:caller} -ArgumentList ${function:test-scriptblock}

Cannot process argument transformation on parameter 'runthis'. Cannot convert the "
1..10 " value of type "System.String" to type "System.Management.Automation.ScriptBlock".
+ CategoryInfo          : InvalidData: (:) [], ParameterBindin...mationException
+ FullyQualifiedErrorId : ParameterArgumentTransformationError
我证实这是一个“已知问题”.虽然在远程处理脚本块的大多数情况下,作为脚本块反刍但是使用ArgumentList却没有,所以相反我做了

function Caller($runthis)
{
   $runthis = [Scriptblock]::Create($runthis)
   &$runthis
}
相关文章
相关标签/搜索