如何通过Azure CLI获取各资源组成本?解决API及模块报错问题
获取Azure资源组成本的解决方案
Azure CLI 方法
单个资源组查询
你之前的命令存在两个问题:日期顺序颠倒(开始日期晚于结束日期),以及未指定符合要求的API版本。修正后的命令如下:
az consumption usage list --resource-group rg1 --start-date 2022-01-01 --end-date 2023-01-28 --api-version 2021-10-01
如果需要汇总该资源组的总成本,可使用查询参数计算:
az consumption usage list --resource-group rg1 --start-date 2022-01-01 --end-date 2023-01-28 --api-version 2021-10-01 --query "sum([].pretaxCost)" -o tsv
遍历所有资源组查询
若要批量获取所有资源组的成本,可结合资源组列表循环执行:
for rg in $(az group list --query "[].name" -o tsv); do echo "资源组: $rg" az consumption usage list --resource-group $rg --start-date 2022-01-01 --end-date 2023-01-28 --api-version 2021-10-01 --query "sum([].pretaxCost)" -o tsv done
PowerShell 方法
先安装所需模块
你遇到的"模块未安装"问题,只需先安装Az.Consumption模块:
Install-Module -Name Az.Consumption -Force -AllowClobber -Scope CurrentUser
(若提示权限不足,可使用管理员身份运行PowerShell)
单个资源组查询
修正日期顺序后执行命令:
Get-AzConsumptionUsageDetail -ResourceGroup "rg1" -StartDate 2022-01-01 -EndDate 2023-01-28 | Select-Object ResourceGroupName, PretaxCost, UsageStart, UsageEnd
遍历所有资源组查询
批量获取所有资源组的成本汇总:
Get-AzResourceGroup | ForEach-Object { $rgName = $_.ResourceGroupName $totalCost = (Get-AzConsumptionUsageDetail -ResourceGroup $rgName -StartDate 2022-01-01 -EndDate 2023-01-28 | Measure-Object -Property PretaxCost -Sum).Sum [PSCustomObject]@{ ResourceGroupName = $rgName TotalPretaxCost = [math]::Round($totalCost, 2) } }
注意事项
- 确保日期参数正确:
StartDate必须早于EndDate,否则会返回空结果或报错 - 操作前需确认已通过
az login(CLI)或Connect-AzAccount(PowerShell)登录Azure,且账号拥有Cost Management Reader或更高权限 - API版本可选用2019-10-01之后的任意稳定版本,如2021-10-01、2023-03-01等
内容的提问来源于stack exchange,提问作者Christy
相关产品推荐
相关产品推荐

