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

如何用PowerShell或C#获取AzureRM中‘文件和文件夹’备份作业状态

解决AzureRM环境下获取多客户MARS备份作业状态的问题

我来帮你搞定这个问题!你之前的PowerShell命令没串联完整,而且缺少获取备份作业的关键步骤,试试下面的完整方案:

核心问题说明

原命令的问题在于:

  • 没有正确分隔多个PowerShell命令(应该用分号或换行分隔)
  • 仅获取了备份容器,但没有关联查询对应的备份作业
  • AzureRM的备份命令需要针对每个Recovery Services Vault单独设置上下文

完整PowerShell脚本

# 获取当前订阅下所有的Recovery Services Vault
$allVaults = Get-AzureRmRecoveryServicesVault

# 遍历每个Vault,查询其下的MARS备份作业
foreach ($vault in $allVaults) {
    # 切换到当前Vault的上下文(这一步非常关键,备份命令依赖上下文)
    Set-AzureRmRecoveryServicesVaultContext -Vault $vault

    # 获取该Vault下所有MARS类型的备份容器(对应Windows客户端/服务器的文件备份)
    $marsContainers = Get-AzureRmRecoveryServicesBackupContainer -ContainerType Windows -BackupManagementType MARS

    # 遍历每个容器,查询对应的备份作业
    foreach ($container in $marsContainers) {
        # 查询该容器下所有状态的备份作业,可按需过滤状态(比如Failed/Completed/InProgress)
        $backupJobs = Get-AzureRmRecoveryServicesBackupJob -Status All -BackupManagementType MARS -Container $container

        # 格式化输出作业关键信息,可根据需求添加更多属性
        Write-Host "=== 来自Vault: $($vault.Name),容器: $($container.FriendlyName) 的备份作业 ==="
        $backupJobs | Select-Object Operation, Status, StartTime, EndTime, Duration, ErrorMessage | Format-Table -AutoSize
    }
}

关键细节说明

  • 上下文切换:每个Recovery Services Vault都需要单独设置上下文,否则备份命令无法定位到目标资源
  • 作业过滤:如果只需要特定状态的作业,把-Status All换成Failed、Completed或者InProgress即可
  • 导出结果:如果需要把结果保存到文件,可将Format-Table替换为Export-Csv -Path "MultiTenantBackupJobs.csv" -Append -NoTypeInformation,方便后续分析
  • 权限要求:确保你的账号拥有所有目标Recovery Services Vault的Backup Reader或更高权限

额外建议

AzureRM模块已经停止更新,微软推荐迁移到Azure Az模块,迁移后只需要把命令中的AzureRm替换为Az即可(比如Get-AzRecoveryServicesVault),功能完全兼容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 07:37:51