使用PowerShell获取Azure备份信息时遇类型及资源不存在错误求助
解决Get-AzRecoveryServicesBackupStatus报错及正确获取备份状态的方法
你遇到的问题核心是对Get-AzRecoveryServicesBackupStatus命令的用途理解有误:这个命令是用来检查单个受保护资源(比如Azure VM、Azure文件共享)是否已配置备份,而不是查询Recovery Services Vault本身的备份状态,所以你传入Vault的名称、资源组和类型参数,自然会提示“资源不存在”。
以下是正确获取所有Azure Backup Vault中备份状态(含最后备份日期、成功/失败状态)的步骤和代码:
正确操作流程
- 设置Recovery Services Vault上下文:先指定要操作的目标Vault
- 获取所有受保护的备份项:遍历每个Vault下的所有备份容器,提取其中的备份项
- 查询每个备份项的最新备份状态:针对每个备份项,获取其最近一次备份作业的结果和时间
PowerShell代码示例
# 获取所有Recovery Services Vault $vaults = Get-AzRecoveryServicesBackupVault # 遍历每个Vault,查询备份状态 foreach ($vault in $vaults) { Write-Host "=== 正在查询Vault: $($vault.Name) ===" -ForegroundColor Cyan # 设置当前Vault的上下文 Set-AzRecoveryServicesVaultContext -Vault $vault # 获取所有受保护的容器(按类型区分,比如AzureVM、AzureStorage) $containers = Get-AzRecoveryServicesBackupContainer -ContainerType AzureVM, AzureStorage foreach ($container in $containers) { # 获取容器内的所有备份项 $backupItems = Get-AzRecoveryServicesBackupItem -Container $container -WorkloadType $container.WorkloadType foreach ($item in $backupItems) { # 获取该备份项的最新备份作业 $latestBackup = Get-AzRecoveryServicesBackupJob -Status Completed, Failed -BackupManagementType $item.BackupManagementType -WorkloadType $item.WorkloadType | Where-Object { $item.Name -eq $_.EntityName } | Sort-Object EndTime -Descending | Select-Object -First 1 # 输出备份状态信息 [PSCustomObject]@{ VaultName = $vault.Name ResourceGroupName = $vault.ResourceGroupName ProtectedResourceName = $item.Name ResourceType = $item.WorkloadType LastBackupDate = if ($latestBackup) { $latestBackup.EndTime } else { "从未备份" } BackupStatus = if ($latestBackup) { $latestBackup.Status } else { "无备份记录" } } } } }
关键说明
Get-AzRecoveryServicesBackupContainer:用来获取Vault下的所有备份容器,每个容器对应一类受保护资源(比如Azure VM容器、Azure存储账户容器)Get-AzRecoveryServicesBackupItem:从容器中提取具体的备份项(比如某台VM、某个文件共享)Get-AzRecoveryServicesBackupJob:筛选该备份项的最新完成/失败的备份作业,从中提取备份时间和状态
内容的提问来源于stack exchange,提问作者mimi m
相关产品推荐
相关产品推荐

