2015-11-04 73 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

原来我发布的代码工作正常。我的实际脚本非常长,并且可能有单独的错误导致我的问题。