2016-08-25 75 views
0

获得输出变量$ var为空,当我运行此脚本:不接收作业

function FOO { write-output "HEY" } 

$var = Start-Job -ScriptBlock { ${function:FOO} } | Wait-Job | Receive-Job 

$var 

我如何从接收作业的输出?

回答

0

Start-Job在后台生成一个新的PowerShell实例,因此没有你的函数FOO的知识,这是你的初始实例

定义有一个额外的参数InitializationScript被称为前期在执行你的脚本块新实例,你可以用它来定义FOO像这样

$var = Start-Job -InitializationScript { function FOO { write-output "HEY" } } -ScriptBlock ... 

BTW:我想你要执行的功能,而不是让函数对象本身的,所以你可能希望你的脚本块改变这种

-ScriptBlock { FOO } 
+0

我很困惑,我在不同的文件中一组函数斑点在一个主文件来源的我怎么会叫的点源功能,在主文件? – red888

+1

你将不得不通过初始化脚本块再次导入/ dot-source所需的函数,如上所示 – DAXaholic

+0

Ah我会尝试一下,点源和做$ {function:myfunc}是否有区别?在脚本块内? – red888