2015-11-04 70 views
1

有人可以解釋爲什麼這份工作沒有返回任何東西嗎?對象在作業中不運行時被創建並返回。我不確定會發生什麼問題。工作不返回PSObject

$verifyJob = { 

$prm = @{'ComputerName' = $args[0];'Credential' = $args[1]} 
$esc = @{'ErrorAction' = 'SilentlyContinue'} 

# IP Address 
$IPAddress = [System.Net.Dns]::GetHostAddresses($args[0]).IPAddressToString 

# WMI queries 
$os = gwmi Win32_OperatingSystem @prm @esc 
$cs = gwmi Win32_ComputerSystem @prm @esc 

[pscustomobject]@{ 
    ComputerName = $args[0] 
    OSVersion = $os.Version.SubString(0,3) 
    Domain = $cs.Domain.Split(".")[0] 
    IP = $IPAddress 
    } 
} 

Start-Job -ScriptBlock $verifyJob -ArgumentList [server],[cred] 
Get-Job |Wait-Job | Receive-Job 

當我收到這份工作時,那裏什麼也沒有。我曾嘗試將對象分配給變量並在作業結束時將其返回,但在那裏也沒有運氣。

*編輯的等待工作清晰度

+1

您是否嘗試使用'Wait-Job'? – PetSerAl

+0

我沒有,但我手動運行一切。我確實等待收到這份工作,直到它顯示爲完整。 – Acerbity

回答

2

你需要等待作業完成得到的結果。

Receive-Job

接收在職cmdlet獲取已經由該接收-Job命令提交時所產生的結果。如果結果尚未完成,則可以運行其他接收作業命令以獲取其餘結果。

鑑於WMI查詢可能需要一段時間才能運行我懷疑您需要執行Wait-Job以允許它完成。

還要注意Get-Job的結果會告訴你工作狀態以及是否有數據等待接收。

+0

我確實解決了上述問題。我正在手動運行。我收到這份工作後就完成了。 – Acerbity

+0

@Acerbity好吧,我想我只是錯過了這個評論。我也注意到你認爲這不是問題,但作爲對此的總體初步答案,我會將其留給其他人。 – Richard

-1

原來我發佈的代碼工作正常。我的實際腳本非常長,並且可能有單獨的錯誤導致我的問題。