如何通过Azure PowerShell获取Azure恢复服务保管库的存储大小?
获取恢复服务保管库存储大小的PowerShell解决方案
我完全理解你的困扰——Azure门户里明明能直观看到恢复服务保管库的存储使用大小,但你试过的Get-AzureRmRecoveryServices*系列cmdlet确实都没有直接提供这个属性。先提个重要的点:AzureRm模块已经被官方弃用,现在推荐使用Az模块,下面的方案也是基于Az模块来实现的。
当前功能现状
目前不管是旧的AzureRm还是新的Az模块,Recovery Services相关的cmdlet都没有直接返回保管库存储使用量的属性。官方暂时也没有公开的时间表说明会在cmdlet中添加这个功能,但我们可以通过另一种可靠方式获取到和门户完全一致的数据:Azure Monitor指标。
具体实现步骤
门户里显示的存储大小本质上是从Azure Monitor的BackupStorageUsed指标拉取的,我们可以用Get-AzMetric cmdlet来查询这个指标:
- 先确保你已经安装了Az模块(未安装的话执行以下命令):
Install-Module -Name Az -AllowClobber -Scope CurrentUser
- 连接到你的Azure账户并切换到目标订阅:
Connect-AzAccount Set-AzContext -SubscriptionId "你的订阅ID"
- 编写脚本查询存储使用量:
# 配置你的保管库信息 $vaultName = "你的恢复服务保管库名称" $resourceGroupName = "保管库所在的资源组名称" # 获取保管库的资源ID $vault = Get-AzRecoveryServicesVault -Name $vaultName -ResourceGroupName $resourceGroupName $vaultResourceId = $vault.Id # 查询最近24小时的存储使用指标(时间粒度可按需调整) $metricData = Get-AzMetric ` -ResourceId $vaultResourceId ` -MetricName "BackupStorageUsed" ` -Namespace "Microsoft.RecoveryServices/vaults" ` -TimeGrain 01:00:00 ` -StartTime (Get-Date).AddDays(-1) ` -EndTime (Get-Date) # 提取最新的存储值并转换为GB(默认返回单位是字节) $latestStorageValue = $metricData.Data | Sort-Object TimeStamp -Descending | Select-Object -First 1 -ExpandProperty Average $storageUsedGB = [math]::Round($latestStorageValue / 1GB, 2) Write-Host "保管库 $vaultName 当前已使用存储: $storageUsedGB GB"
补充说明
- 这个方法获取到的数值和Azure门户里显示的完全一致,因为门户后台就是调用同样的Monitor指标接口。
- 如果需要更精确的时间点数据,可以调整
TimeGrain参数(比如设置为00:05:00获取5分钟粒度的数据),或者修改StartTime和EndTime来指定查询范围。 - 记得尽快从AzureRm模块迁移到Az模块,官方已经停止对AzureRm的更新和支持了。
内容的提问来源于stack exchange,提问作者Gyula Somogyi
相关产品推荐
相关产品推荐

