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

如何用PowerShell获取Azure资源组内资源成本?解决Scope参数报错

解决Azure资源组资源成本获取的参数错误问题

错误原因

你使用的Get-AzConsumptionUsageDetail cmdlet不存在-Scope参数,这是导致报错的直接原因。

正确实现方案

方案一:批量获取并分组求和(推荐,效率更高)

一次性拉取资源组内所有资源的消费明细,再按资源分组计算总成本,避免循环调用的性能损耗:

# 配置目标资源组和订阅信息
$resourceGroupName = "你的资源组名称"
$subscriptionId = "你的订阅ID"

# 切换到目标订阅(当前上下文已在目标订阅可省略)
Set-AzContext -Subscription $subscriptionId

# 获取资源组过去1个月的消费明细,按资源分组求和
$resourceCosts = Get-AzConsumptionUsageDetail -ResourceGroup $resourceGroupName `
    -StartDate (Get-Date).AddMonths(-1) -EndDate (Get-Date) |
    Group-Object -Property ResourceId, ResourceName |
    ForEach-Object {
        [PSCustomObject]@{
            ResourceName = $_.Group[0].ResourceName
            TotalCost    = ($_.Group | Measure-Object -Property PretaxCost -Sum).Sum
        }
    }

# 格式化输出结果
$resourceCosts | Format-Table ResourceName, TotalCost -AutoSize

方案二:循环单个资源获取成本(适合少量资源)

如果坚持要逐个资源查询,将原脚本中的-Scope替换为-ResourceId参数(该cmdlet支持通过此参数指定单个资源):

# 假设$resources已为目标资源组的资源集合
foreach ($resource in $resources) {
    $resourceId = $resource.ResourceId
    $cost = Get-AzConsumptionUsageDetail -ResourceId $resourceId `
        -StartDate (Get-Date).AddMonths(-1) -EndDate (Get-Date) |
        Measure-Object -Property PretaxCost -Sum |
        Select-Object -ExpandProperty Sum

    Write-Host "Resource: $($resource.Name)"
    Write-Host "Cost: $($cost)`n"
}

注意事项

  • 需确保账号拥有Cost Management Reader或Contributor类角色权限,才能读取消费数据
  • Azure消费数据存在24-48小时的延迟,无法获取实时的最新成本
  • 资源数量较多时,优先选择批量分组的方案,减少API调用次数提升效率

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 15:42:39