You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Windows Server 2012/R2通过PowerShell获取WindowsServerBackup完整信息?

解决Windows Server 2012/2012 R2中PowerShell获取完整备份结果的方法

你之前尝试的方向其实都没错,只是可能没用到正确的参数、日志源或者属性解析方式。下面是几个能完整获取备份状态、卷信息和错误详情的可靠方案:

方法1:用Get-WBJob直接读取备份作业记录

Get-WBJob默认只显示正在运行的作业,要获取历史备份记录必须加上-Previous参数。它返回的对象里包含了你需要的核心信息:

# 获取最新的1次备份作业记录
$latestBackup = Get-WBJob -Previous 1

# 整理成易读的结构化结果
$backupReport = [PSCustomObject]@{
    备份启动时间 = $latestBackup.StartTime
    备份状态 = switch ($latestBackup.JobState) {
        1 { "成功完成" }
        2 { "失败" }
        3 { "已取消" }
        default { "未知状态/运行中" }
    }
    备份源卷 = $latestBackup.SourceVolumes | Select-Object -ExpandProperty VolumePath
    备份目标卷 = $latestBackup.BackupTargetVolumes | Select-Object -ExpandProperty VolumePath
    错误详情 = if ($latestBackup.JobState -eq 2) { $latestBackup.ErrorDescription } else { "无" }
}

# 输出结果
$backupReport

注意:不管是手动触发还是计划任务执行的备份,Get-WBJob都能捕获到记录,前提是你用管理员权限运行PowerShell。

方法2:通过Get-WinEvent读取备份专属日志

Windows Server Backup的详细日志存放在Microsoft-Windows-Backup/Operational事件日志中,这里的信息比Get-WBJob更细致,尤其是错误场景下的堆栈和上下文信息:

# 获取最新的备份结果事件(成功事件ID=4,失败事件ID=5)
$latestBackupEvent = Get-WinEvent -LogName "Microsoft-Windows-Backup/Operational" -FilterXPath "*[System[(EventID=4 or EventID=5)]]" -MaxEvents 1

# 解析关键信息
$status = if ($latestBackupEvent.Id -eq 4) { "成功" } else { "失败" }
$sourceVolumes = $latestBackupEvent.Properties[2].Value
$targetVolume = $latestBackupEvent.Properties[3].Value
$detailMessage = $latestBackupEvent.Message

# 输出结构化结果
[PSCustomObject]@{
    事件发生时间 = $latestBackupEvent.TimeCreated
    备份状态 = $status
    备份源卷 = $sourceVolumes
    备份目标 = $targetVolume
    详细日志 = $detailMessage
}

**为什么之前用Get-Eventlog没效果?**因为Get-Eventlog只能访问传统的系统/应用日志,而Microsoft-Windows-Backup/Operational是新式事件日志,必须用Get-WinEvent才能读取。

方法3:WMI/CIM查询(跨版本兼容方案)

如果需要更底层的访问方式,可以使用root\Microsoft\Windows\Backup命名空间下的CIM类:

# 获取最新的备份作业记录
$latestWmiJob = Get-CimInstance -Namespace "root\Microsoft\Windows\Backup" -ClassName "WBJob" | 
                Sort-Object -Property StartTime -Descending | 
                Select-Object -First 1

# 整理结果
[PSCustomObject]@{
    开始时间 = $latestWmiJob.StartTime
    结束时间 = $latestWmiJob.EndTime
    备份状态 = switch ($latestWmiJob.JobState) {
        1 { "成功" }
        2 { "失败" }
        3 { "已取消" }
        default { "运行中" }
    }
    源卷列表 = $latestWmiJob.SourceVolumes | ForEach-Object { $_.VolumePath }
    目标存储 = $latestWmiJob.BackupTarget.VolumePath
    错误详情 = $latestWmiJob.Error
}

常见误区提醒:

  • 必须以管理员权限运行PowerShell,否则Get-WBJob和WMI查询会返回空结果或权限错误。
  • 如果是网络共享目标的备份,BackupTargetVolumes会显示为网络路径而非本地卷,需要注意解析逻辑。

内容的提问来源于stack exchange,提问作者keisuke

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 09:39:13