没有从接收工作中得到输出

not getting output from receive job

当我运行这个脚本时,变量 $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 ...  

顺便说一句:我猜你想执行函数而不是获取函数对象本身,所以你可能想将脚本块更改为此

-ScriptBlock { FOO }