当我运行这个脚本时,变量$var是空的:
function FOO { write-output "HEY" }
$var = Start-Job -ScriptBlock { ${function:FOO} } | Wait-Job | Receive-Job
$var
如何从receive-job获得输出?
Start-Job
在后台生成一个新的PowerShell实例,因此它不知道在初始实例中定义的函数FOO
还有一个额外的参数InitializationScript
,它被称为在新实例中预先执行脚本块,您可以使用它来定义FOO
,如下所示
$var = Start-Job -InitializationScript { function FOO { write-output "HEY" } } -ScriptBlock ...
BTW:我猜你想执行函数而不是获得函数对象本身,所以你可能想改变你的脚本块到这个
-ScriptBlock { FOO }