如何跨多台服务器批量检查所有Veeam备份作业状态
跨多台服务器批量检查Veeam备份作业状态实现方案
前置要求
- 运行脚本的机器可通过网络正常访问所有目标服务器(示例为SRV1、SRV2、SRV3)
- 脚本运行账号对所有目标服务器具备Veeam备份管理员权限、PowerShell远程访问权限
- 所有目标服务器已安装Veeam Backup & Replication PowerShell管理模块
实现逻辑
通过PowerShell远程执行能力遍历所有目标服务器,在每台服务器本地运行原有备份状态检查逻辑,最后汇总所有结果输出。同时修复了原脚本的逻辑缺陷:原脚本遍历备份作业时未按作业ID关联匹配对应会话,会导致每个作业条目下重复输出全量作业的会话记录。
最终可用脚本
# 配置需要检查的目标VBR服务器列表 $targetServers = @("SRV1", "SRV2", "SRV3") # 配置检查时间范围:过去24小时 $timeThreshold = (Get-Date).AddHours(-24) # 汇总结果存储容器 $totalResult = @() foreach ($srv in $targetServers) { Write-Host "`n===== 开始检查服务器 $srv 备份状态 =====" -ForegroundColor Cyan try { # 远程调用目标服务器执行检查逻辑 $srvBackupData = Invoke-Command -ComputerName $srv -ScriptBlock { param($threshold) # 加载Veeam PowerShell管理单元 Add-PSSnapin VeeamPSSnapin -ErrorAction Stop $allJobSessions = Get-VBRComputerBackupJobSession $jobCheckResult = @() # 遍历所有备份作业匹配对应会话 foreach ($job in Get-VBRComputerBackupJob) { $matchedSessions = $allJobSessions | Where-Object { $_.JobId -eq $job.Id -and $_.CreationTime -ge $threshold } | Sort-Object CreationTime | Select CreationTime, EndTime, Result, State $jobCheckResult += [PSCustomObject]@{ BelongServer = $env:COMPUTERNAME JobName = $job.Name SessionRecords = $matchedSessions } } return $jobCheckResult } -ArgumentList $timeThreshold -ErrorAction Stop # 控制台格式化输出当前服务器结果 foreach ($job in $srvBackupData) { Write-Host "`n------------ 备份作业名: $($job.JobName) | 所属服务器: $($job.BelongServer) ------------" $job.SessionRecords | Format-Table -AutoSize $totalResult += $job } } catch { Write-Warning "连接服务器 $srv 失败,错误信息: $_" } } # 如需导出汇总结果为CSV文件,可取消以下行注释 # $totalResult | Select-Object BelongServer, JobName, @{n="LastBackupResult";e={$_.SessionRecords | Select-Object -Last 1 -ExpandProperty Result}}, @{n="LastBackupTime";e={$_.SessionRecords | Select-Object -Last 1 -ExpandProperty CreationTime}} | Export-Csv -Path "Veeam备份状态汇总_$(Get-Date -Format 'yyyyMMdd').csv" -NoTypeInformation -Encoding UTF8
配置说明
- 首次使用需在每台目标服务器上以管理员身份执行
Enable-PSRemoting -Force,开启PowerShell远程访问权限 - 若运行脚本的机器和目标服务器不在同一域,需在脚本运行机器上执行以下命令添加信任主机:
Set-Item WSMan:\localhost\Client\TrustedHosts -Value "SRV1,SRV2,SRV3" -Concatenate - 脚本默认在控制台格式化输出结果,可根据需要开启CSV导出功能,方便存档或上报。
内容的提问来源于stack exchange,提问作者StackBuck
相关产品推荐
相关产品推荐

