有人可以解释为什么这份工作没有退货吗?当对象未在作业中运行时,将创建并返回该对象。我不确定会出现什么问题。
$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
当我收到工作时,那里什么都没有。我已经尝试将对象分配给变量并在作业结束时返回它,但也没有运气。
*编辑了等待作业清晰度
答案 0 :(得分:2)
您需要等待工作完成才能获得结果。
来自Receive-Job
:
Receive-Job cmdlet获取在提交Receive-Job命令时生成的结果。如果结果尚未完成,您可以运行其他Receive-Job命令以获取剩余的结果。
鉴于WMI查询可能需要一段时间才能运行,我怀疑您需要执行Wait-Job
才能完成。
另请注意Get-Job
的结果会告诉您作业的状态以及是否有等待接收的数据。
答案 1 :(得分:-1)
事实证明我发布的代码工作正常。我的实际脚本很长,可能会有一个单独的错误导致我的问题。