You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure用量与费用数据导出至容器的自动化问题排查

问题:Azure Cost Management脚本导出的CSV比门户手动下载的小15MB

我通过PowerShell调用AZ CLI,以计费账户ID为范围导出Azure用量与费用数据到CSV。脚本能正常运行,但生成的文件(约641MB)比Azure门户手动下载的文件(约656MB)少15MB左右的数据。我的目标是实现每月自动导出该CSV,后续用PowerShell发送成本邮件,已联系微软,现寻求有自动化导出经验的建议。

我的导出代码如下:

# Log into the Azure Subscription and authenticate the login
Az Login

# Set variables for the command. 
$subscriptionId = "XXXXXXXXXXXXXXXXXXXXXXXXX"
$storageAccountId = "/subscriptions/$subscriptionId/resourceGroups/XXXXXXXXXXXXXXXXXXXXXX/providers/Microsoft.Storage/storageAccounts/XXXXXXXXXXXXXXXXXXXXXXXXXXX"
$containerName = "publicstoragecontainer001"
$exportName = "Usage Data for XXXXXXXXXXXXXXXXX"
$timeFrame = "TheLastBillingMonth"
$type = "Usage"
$folderName = "Total Usage Cost Exports"
$scheduleStatus = "Active"
$reoccurance = "Monthly"

# Get the Usage from the Billing Scope. 
$scope = "/providers/Microsoft.Billing/billingAccounts/XXXXXXXXXXXXXXXXX"

# Time Variables
$current_time = Get-Date
$future_time = $current_time.AddHours(1)
$current_time_str = $current_time.ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ssZ")
$future_time_str = $future_time.ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ssZ")

# Export the usage data of each tenant to the storage account
az costmanagement export create --name $exportName --scope $scope --storage-account-id $storageAccountId --storage-container $containerName --timeframe $timeFrame --type $type --storage-directory $folderName --schedule-status $scheduleStatus --recurrence $reoccurance --recurrence-period from=$current_time_str to=$future_time_str

排查建议:

  • 核对时间范围一致性:确认门户手动下载时选择的时间范围与脚本中TheLastBillingMonth对应的计费周期完全匹配。部分计费账户的结账日不是月末(比如每月25号),脚本执行时间如果在结账日前,可能导致导出范围不完整;可以尝试改用明确的日期区间(如--timeframe Custom --time-period start=2024-03-01T00:00:00Z end=2024-03-31T23:59:59Z)测试。
  • 验证导出类型与字段:脚本使用--type Usage,检查门户手动下载时是否选择了相同的类型(ActualCost/AmortizedCost/Usage)。若门户包含摊销、预留实例调整等额外费用项,需切换对应类型测试;同时对比两个CSV的字段列数,确认CLI导出是否遗漏了某些维度。
  • 修正调度周期设置:当前脚本中recurrence-period仅设置了1小时的窗口,这不符合每月调度的需求。正确的循环周期应覆盖未来数月(如from=2024-04-01T00:00:00Z to=2025-04-01T00:00:00Z),否则导出任务可能仅执行一次而非每月自动运行。另外,需在Azure门户的「成本管理 + 计费 > 导出」页面确认任务的执行历史,检查生成的文件是否完整。
  • 检查文件完整性:对比两个CSV的行数(用Import-Csv .\script-export.csv | Measure-Object),确认是否缺失记录;同时查看存储账户中导出文件的MD5哈希值,与门户下载文件的哈希对比,排除上传过程中的截断问题。
  • 测试一次性导出:先创建一次性导出(去掉--schedule-status Active --recurrence Monthly --recurrence-period参数),生成后与门户手动下载文件对比,判断是调度任务的问题还是导出命令本身的差异。

内容的提问来源于stack exchange,提问作者Devin York DJ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 07:52:42