我发现此天蓝色的PS命令Get-AzureRmConsumptionUsageDetail根据文档能够“获取订阅的使用详细信息” 。
我在MSDN帐户上成功执行了一些测试。当尝试使用Enterprise帐户(具有更多资源)时,我发现在所有情况下它总是最多返回1000个项目。
我尝试将-MaxCount
设置为大于1000的值,但是没有成功。
我看到的唯一解决方法是尝试识别预订中的所有资源,并查询每个资源,希望每个人都没有超过一千个条目。坏消息是我无法对已删除的项目执行此操作。
MS docs页面上未提及此行为,因此,您知道如何正确使用此命令吗?
答案 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