【问题标题】:Get-AzureRmConsumptionUsageDetail limited response to 1000 itemsGet-AzureRmConsumptionUsageDetail 限制响应 1000 项
【发布时间】:2018-06-20 12:49:08
【问题描述】:
我发现这个天蓝色 PS 命令 Get-AzureRmConsumptionUsageDetail 根据文档能够“获取订阅的使用详情”。
我成功地对我的 MSDN 帐户进行了一些测试。尝试使用 Enterprise 帐户(拥有更多资源)时,我发现它始终返回最多 1000 个项目。
我尝试将 -MaxCount 设置为高于 1000 的值但没有成功。
我看到的唯一解决方法是尝试识别订阅中的所有资源并查询每个资源,希望没有人单独拥有超过一千个条目。坏消息是我无法对已删除的项目执行此操作。
MS 文档页面上没有提到这种行为,所以知道如何正确使用这个命令吗?
【问题讨论】:
标签:
azure
azure-powershell
【解决方案1】:
为了部分解决我的问题,我开发了一个快速而肮脏的脚本,它能够请求所有当前订阅资源,然后遍历所有这些资源以获取计费详细信息。单个资源超过 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