如何获取租户下所有Azure存储账户的已使用大小并导出至CSV?
导出租户下所有Azure存储账户已使用数据至CSV的PowerShell脚本
要实现获取租户内所有Azure存储账户已使用数据并导出为CSV的需求,可通过Az PowerShell模块完成遍历、指标采集与导出操作,以下是完整的解决方案:
前提条件
- 已安装Az PowerShell模块(未安装可执行:
Install-Module -Name Az -Scope CurrentUser -Repository PSGallery -Force) - 拥有租户内足够权限(如Reader、Storage Account Contributor)
完整脚本
# 登录Azure账户 Connect-AzAccount # 获取租户下所有订阅 $subscriptions = Get-AzSubscription # 初始化数组存储结果 $storageUsageData = @() # 遍历每个订阅 foreach ($subscription in $subscriptions) { # 切换到当前订阅 Select-AzSubscription -Subscription $subscription.Id | Out-Null # 获取当前订阅下所有存储账户 $storageAccounts = Get-AzStorageAccount # 遍历每个存储账户 foreach ($storageAccount in $storageAccounts) { # 获取存储账户已使用容量指标(取过去24小时最新值) $usageMetrics = Get-AzMetric -ResourceId $storageAccount.Id ` -MetricName "UsedCapacity" ` -TimeGrain 24h ` -StartTime (Get-Date).AddDays(-1) ` -EndTime (Get-Date) ` -AggregationType Average # 处理指标数据,转换为GB单位 $usedCapacity = if ($usageMetrics.DataPoints.Count -gt 0) { [math]::Round($usageMetrics.DataPoints[0].Average / 1GB, 2) } else { 0 } # 收集数据到结果数组 $storageUsageData += [PSCustomObject]@{ SubscriptionName = $subscription.Name SubscriptionId = $subscription.Id StorageAccountName = $storageAccount.StorageAccountName ResourceGroupName = $storageAccount.ResourceGroupName UsedCapacityGB = $usedCapacity Region = $storageAccount.Location LastMetricUpdate = if ($usageMetrics.DataPoints.Count -gt 0) { $usageMetrics.DataPoints[0].TimeStamp } else { $null } } } } # 导出数据到CSV文件(文件名带日期戳) $outputPath = "AzureStorageUsage_$(Get-Date -Format 'yyyyMMdd').csv" $storageUsageData | Export-Csv -Path $outputPath -NoTypeInformation -Encoding UTF8 Write-Host "数据已成功导出至: $outputPath"
关键说明
- 全订阅覆盖:脚本自动遍历租户下所有订阅,确保不会遗漏任何存储账户
- 指标处理:采集
UsedCapacity指标并转换为GB单位,适配仪表盘展示需求 - 异常兼容:针对无指标数据的存储账户填充默认值,避免脚本中断
- 多维度字段:输出包含订阅信息、存储账户属性、容量数据等字段,满足仪表盘多维度分析需求
内容的提问来源于stack exchange,提问作者Nolan1513
相关产品推荐
相关产品推荐

