如何通过PowerShell获取Azure备份库的已备份存储量(GB)及备份状态
修改PowerShell函数获取Azure备份作业状态及数据量
原函数仅能获取备份作业列表,无法提取已备份数据量是因为该信息存储在作业详情中,需要通过Get-AzRecoveryServicesBackupJobDetails命令获取。以下是修改后的完整函数,可实现需求:
Function Get-AzBackupInfo { # 一次性获取所有Recovery Services Vault,避免重复调用提升效率 $vaults = Get-AzRecoveryServicesVault $hostname = hostname $results = @() foreach ($vault in $vaults) { # 筛选资源组名包含主机名的Vault if ($vault.ResourceGroupName -match $hostname) { # 获取该Vault下的所有备份作业 $jobList = Get-AzRecoveryServicesBackupJob -VaultId $vault.ID foreach ($job in $jobList) { # 获取单个作业的详细信息 $jobDetails = Get-AzRecoveryServicesBackupJobDetails -Job $job # 初始化备份大小变量,默认空值 $backupSizeGB = $null # 仅当作业成功完成时计算已备份数据量(单位:GB) if ($job.Status -eq "Completed") { # 将字节转换为GB(1GB = 1024^3 字节) $backupSizeGB = [math]::Round($jobDetails.BackupSizeInBytes / 1GB, 2) } # 构造结果对象 $resultObj = [PSCustomObject]@{ VaultName = $vault.Name ResourceGroupName = $vault.ResourceGroupName JobName = $job.Name JobStatus = $job.Status BackupSizeGB = $backupSizeGB StartTime = $job.StartTime EndTime = $job.EndTime } $results += $resultObj } } } # 返回最终结果 $results }
关键修改说明:
- 优化Vault获取逻辑:一次性获取所有Vault并遍历,避免原函数中重复调用的冗余操作
- 获取作业详情:通过
Get-AzRecoveryServicesBackupJobDetails提取每个作业的备份数据量(BackupSizeInBytes字段) - 数据量转换:将字节数除以
1GB(PowerShell内置常量,等价于1024*1024*1024),并保留两位小数 - 状态判断:仅当作业状态为
Completed时才计算并返回备份数据量,失败作业该字段为空 - 结构化输出:返回包含Vault信息、作业状态、备份大小等字段的自定义对象,便于后续处理或导出
内容的提问来源于stack exchange,提问作者mimi m
相关产品推荐
相关产品推荐

