2014-02-10 120 views
5

我有一個Powershell腳本,我正在調用一個名爲generate_html的函數。Powershell:不要等待函數返回

有沒有一種方法可以在繼續進行下一個函數調用之前調用該函數,而不是等待其返回值?

我不想訴諸分解成多個腳本並同時運行這些腳本。

function generate_html($var) 
{ 
... 
} 

generate_html team1 
generate_html team2 
+2

看看使用工作:'得到的幫助about_jobs' – arco444

回答

8

可以啓動方法,異步工作,使用Start-Job cmdlet的。

所以,你會做這樣的事情:

function generate_html($var) 
{ 
#snipped 
} 

Start-Job -ScriptBlock { generate_html team1 } 

如果你需要監視作業是否完成,無論是存儲啓動作業的輸出或使用Get-Job讓所有作業開始在當前會議,拉出你想要的。 一旦你的,檢查State屬性來看看它的值是Finished

編輯: 其實,我的錯誤,作業會在另一個線程,所以函數定義或不可用(不是在一個模塊PowerShell知道)在你開始工作的線程中不可用。

嘗試聲明你的函數作爲腳本塊:

$generateHtml = { 
    param($var) 
    #snipped 
} 

Start-Job -ScriptBlock $generateHtml -ArgumentList team1 
Start-Job -ScriptBlock $generateHtml -ArgumentList team2 
+2

注意'-Keep'標誌上接收在職可以防止結果的自動刪除後接收。 '接收工作名稱MyJob -Keep'如果這對任何讀者都成爲問題。 –

+0

我收到以下錯誤:術語'generate_html'不被識別爲cmdlet,函數,腳本文件或可操作程序的名稱。 – kernelpanic