2016-08-25 79 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