没有来自接收作业-OutVariable-保持

时间:2019-08-19 16:14:49

标签: powershell powershell-3.0

我有一个PowerShell功能,可以在许多不同的服务器上异步运行后台作业。我正在尝试检查作业是否引发任何错误。

问题在于没有作业返回任何输出。每个作业都通过调用Write-HostWrite-Output返回错误消息,但是我无法解析后台作业的结果是否有错误。

我所采取的一般方向是将每个作业的结果(即标准输出)附加到某个变量,但是对于那些返回一些错误代码(或其他内容)的作业,我会很好的-只是尝试找出后见之明,后台作业是否成功。

有什么建议吗?

$servers = "foo.us,bar.org"

($servers -split ",") | ForEach-Object {
    Start-Job {
        Write-Host "foo"
        Write-Output "foo"
    } -ArgumentList $args...
}

$all_job_results = ""

# iterate through all background jobs
while ($jobs = Get-Job -HasMoreData $true) {  

    foreach ($job in $jobs) {
        if ($job.State -eq "Completed" -or $job.State -eq "Failed") {
            # retain job output and append it to the $all_job_results variable
            $received_job = Receive-Job $job -OutVariable +all_job_results -Keep

            # ... $received_job is null.

            Remove-Job -Name $job.Name
        }
    }
}

# ... $all_job_results is null.

0 个答案:

没有答案