Поскольку -ArgumentList
принимает Object[]
, я думаю, что оно принимается caller
в виде строки.Один из обходных путей заключается в следующем:
function caller ($runthis) {
$runthis = $executioncontext.InvokeCommand.NewScriptBlock($runthis)
& $runthis
}
Обратите внимание, что что-то вроде этого работает:
function caller ($runthis) {
$runthis | kill
}
$p= Get-Process -name notepad
invoke-command -computer localhost -ScriptBlock ${function:caller} -ArgumentList $p
Я думаю, что блоки скриптов обрабатываются по-разному, поскольку их запуск может считаться проблемой безопасности.