作业没有返回PSObject

时间:2015-11-04 15:42:44

标签: powershell jobs

有人可以解释为什么这份工作没有退货吗?当对象未在作业中运行时,将创建并返回该对象。我不确定会出现什么问题。

$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

当我收到工作时,那里什么都没有。我已经尝试将对象分配给变量并在作业结束时返回它,但也没有运气。

*编辑了等待作业清晰度

2 个答案:

答案 0 :(得分:2)

您需要等待工作完成才能获得结果。

来自Receive-Job

  

Receive-Job cmdlet获取在提交Receive-Job命令时生成的结果。如果结果尚未完成,您可以运行其他Receive-Job命令以获取剩余的结果。

鉴于WMI查询可能需要一段时间才能运行,我怀疑您需要执行Wait-Job才能完成。

另请注意Get-Job的结果会告诉您作业的状态以及是否有等待接收的数据。

答案 1 :(得分:-1)

事实证明我发布的代码工作正常。我的实际脚本很长,可能会有一个单独的错误导致我的问题。