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

使用Get-AzConsumptionUsageDetail遇BadRequest,调用Rest API仍失败求助

问题解决:Azure消费报告脚本报错修复

错误原因分析

你遇到的两个核心问题:

  • API版本不兼容:错误提示明确说明2023-03-01-preview版本不支持UsageDetails资源类型,官方支持的有效正式版本为2023-03-01。
  • 输出目录缺失:C:\Reports文件夹未提前创建,导致Export-Csv无法写入文件。

修正后的脚本

Connect-AzAccount

$subList = Get-AzSubscription
$startDate = "2022-04-01"
$endDate = "2022-04-30"
$outputDir = "C:\Reports"

# 检查并自动创建输出目录
if (-not (Test-Path -Path $outputDir)) {
    New-Item -ItemType Directory -Path $outputDir | Out-Null
}

foreach($sub in $subList) {
    # 使用官方支持的正式API版本
    $url = "https://management.azure.com/subscriptions/$($sub.Id)/providers/Microsoft.Consumption/usageDetails?api-version=2023-03-01&`$filter=properties/UsageStart ge '$startDate' and properties/UsageEnd le '$endDate'"
    $accessToken = (Get-AzAccessToken -ResourceUrl https://management.azure.com).Token
    $headers = @{
        Authorization = "Bearer $accessToken"
    }
    
    try {
        $response = Invoke-RestMethod -Uri $url -Method GET -Headers $headers
        # 提取API返回的实际消费明细数据(value字段)
        $response.value | Export-Csv -Path "$outputDir\$($sub.Name).csv" -NoTypeInformation -Encoding UTF8
        Write-Host "订阅[$($sub.Name)]的消费报告已成功导出"
    }
    catch {
        Write-Error "处理订阅[$($sub.Name)]时失败: $_"
    }
}

关键修改说明

  • API版本调整:将api-version从预览版改为正式版2023-03-01,匹配Azure Consumption服务的支持范围。
  • 目录预创建:新增目录检查逻辑,自动生成缺失的输出文件夹,避免写入失败。
  • 数据提取优化:Azure Consumption API返回的响应包含value字段(实际的消费明细数组),直接导出该字段可获得正确的结构化数据。
  • 错误捕获:添加try-catch块,方便定位单个订阅的处理异常,避免脚本整体中断。

内容的提问来源于stack exchange,提问作者Mantra Reborn

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 16:35:38