我有一个PowerShell功能,可以在许多不同的服务器上异步运行后台作业。我正在尝试检查作业是否引发任何错误。
问题在于没有作业返回任何输出。每个作业都通过调用Write-Host
和Write-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.