获取AzureRmConsumptionUsageDetail对1000项的有限响应

获取AzureRmConsumptionUsageDetail对1000项的有限响应,azure,azure-powershell,Azure,Azure Powershell,我发现了这个azure PS命令,根据文档,它可以“获取订阅的使用详细信息” 我成功地对我的MSDN帐户执行了一些测试。当尝试使用企业帐户(有更多资源)时,我发现在所有情况下,它最多返回1000个项目 我试图将-MaxCount设置为高于1000的值,但没有成功 我看到的唯一解决方法是尝试识别订阅中的所有资源,并查询每个资源,希望每个资源都没有超过1000个条目。坏消息是,我无法对已删除的项目执行此操作 MS docs页面上未提及此行为,因此,您知道该如何正确使用此命令吗?为了部分解决我的问题,

我发现了这个azure PS命令,根据文档,它可以“获取订阅的使用详细信息”

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

我试图将
-MaxCount
设置为高于1000的值,但没有成功

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


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

为了部分解决我的问题,我开发了一个快速而肮脏的脚本,可以请求所有当前订阅资源,然后遍历所有资源以获取计费详细信息。单个资源超过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