如何通过PowerShell分三列导出Azure近3个月VM用量至CSV
解决Azure虚拟机多时间段用量分列导出CSV的问题
你的脚本目前会循环覆盖/追加同一CSV文件,导致三个时间段的UsageQuantity都挤在同一列里。要实现每个时间段用量单独成列,需要先收集各时间段数据并按VM实例合并,再导出。
实现步骤
- 为每个时间段的用量字段设置唯一列名(比如
Nov-Dec_Usage) - 用VM的唯一标识(如
ResourceId)作为键,合并不同时间段的同VM数据 - 最后将合并后的结构化数据导出为CSV
修改后的脚本
# 基础变量配置 $startDate = Get-Date $subscription = (Get-AzContext).Subscription.Name $ResourceGroup = "你的资源组名称" # 替换为实际资源组名 $sku = "Virtual machine" $Region = "目标区域" # 替换为实际区域 # 定义需要统计的三个时间段及对应列名 $timePeriods = @( @{ ColumnName = "Nov-Dec_Usage"; StartDate = $startDate.AddMonths(-2); EndDate = $startDate.AddMonths(-1) }, @{ ColumnName = "Dec-Jan_Usage"; StartDate = $startDate.AddMonths(-1); EndDate = $startDate }, @{ ColumnName = "Jan-Feb_Usage"; StartDate = $startDate.AddMonths(-3); EndDate = $startDate.AddMonths(-2) } ) # 初始化字典存储合并后的VM数据 $mergedVmData = @{} foreach ($period in $timePeriods) { # 获取当前时间段的用量详情 $usageRecords = Get-AzConsumptionUsageDetail -StartDate $period.StartDate -EndDate $period.EndDate -ResourceGroup $ResourceGroup | Where-Object { $_.Product -like "*$sku*" -and $_.InstanceLocation -like "$Region" } foreach ($record in $usageRecords) { $vmUniqueId = $record.ResourceId # 如果是首次处理该VM,先初始化基础信息 if (-not $mergedVmData.ContainsKey($vmUniqueId)) { $mergedVmData[$vmUniqueId] = [PSCustomObject]@{ ResourceId = $record.ResourceId VMName = $record.ResourceName Location = $record.InstanceLocation ProductType = $record.Product } } # 添加当前时间段的用量字段 $mergedVmData[$vmUniqueId] | Add-Member -MemberType NoteProperty -Name $period.ColumnName -Value $record.UsageQuantity -Force } } # 将合并后的数据导出为CSV $mergedVmData.Values | Export-Csv -NoTypeInformation -Path ".\$subscription.csv"
注意事项
- 时间段的日期计算是基于当前
$startDate的,如果你需要严格对应Nov-Dec等固定月份,可以手动指定日期(比如[DateTime]"2023-11-01")替代AddMonths - 用
ResourceId作为VM唯一标识是因为它全局唯一,避免重名VM导致数据混乱 - 如果同一VM在单个时间段内有多条用量记录,需要求和的话,可以将
$record.UsageQuantity替换为:($usageRecords | Where-Object { $_.ResourceId -eq $vmUniqueId }).UsageQuantity | Measure-Object -Sum | Select-Object -ExpandProperty Sum
内容的提问来源于stack exchange,提问作者Siddharth Singh
相关产品推荐
相关产品推荐

