Get-AzureRmConsumptionUsageDetail将响应限制为1000个项目

时间:2018-06-20 12:49:09

标签: azure azure-powershell

我发现此天蓝色的PS命令Get-AzureRmConsumptionUsageDetail根据文档能够“获取订阅的使用详细信息”

我在MSDN帐户上成功执行了一些测试。当尝试使用Enterprise帐户(具有更多资源)时,我发现在所有情况下它总是最多返回1000个项目。

我尝试将-MaxCount设置为大于1000的值,但是没有成功。

我看到的唯一解决方法是尝试识别预订中的所有资源,并查询每个资源,希望每个人都没有超过一千个条目。坏消息是我无法对已删除的项目执行此操作。

MS docs页面上未提及此行为,因此,您知道如何正确使用此命令吗?

1 个答案:

答案 0 :(得分:0)

为了部分解决我的问题,我开发了一个快速且肮脏的脚本,该脚本可以询问所有当前的订阅资源,然后遍历所有这些资源以获取帐单详细信息。单个资源超过1000行的限制应该很奇怪,因为通常每天都要对资源进行计费。

缺点是它必须执行的api调用数量,因此不包括时间以及删除的资源。

$resources = Get-AzureRmResource

Write-Output "Found $($resources.Count) in the subscription"

$consumption = @()

$i = $resources.Count
foreach($resource in $resources) { 
    $consumption += Get-AzureRmConsumptionUsageDetail -InstanceId $resource.ResourceId
    $i--
    Write-Output "$i - $($resource.ResourceId)"
}

$consumption | Group-Object InstanceId | %{ 
    New-Object psobject -Property @{
            ResourceGroup = ([regex]::Match($_.Name, ".*\/resource[gG]roups\/(.*?)\/.*$")).Groups[1].Value.ToUpper(); 
            Cost = ($_.Group | Measure-Object PretaxCost -Sum).Sum
    } 
} | Group-Object ResourceGroup | %{ 
    New-Object psobject -Property @{
            ResourceGroup = $_.Name; 
            Total = ($_.Group | Measure-Object Cost -Sum).Sum
    }
} | Export-Csv cost_report.csv