-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathgetbills.ps1
48 lines (38 loc) · 1.39 KB
/
getbills.ps1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
Param(
[string]$starttime,
[string]$endtime,
[string]$granularity
)
Write-Host "Usage per subscription for period from " $starttime "to" $endtime
$subs = Get-AzsUserSubscription
$usage = Get-AzsSubscriberUsage -ReportedStartTime $starttime -ReportedEndTime $endtime -AggregationGranularity $granularity
$subusage = $usage | group SubscriptionId
$usagedata = @()
foreach( $sub in $subusage )
{
$subinfo = $subs | where SubscriptionId -eq $sub.Name
Write-Host $sub.Name, $subInfo.DisplayName, $subInfo.Owner
foreach( $item in $sub.Group)
{
#Write-Host $item.InstanceData
$data = ($item.InstanceData | convertfrom-json).'Microsoft.resources'
$m = $data.resourceUri -match "resourceGroups/(.*)/providers/(.*)/(.*)/(.*)"
$usagerec = New-Object PSObject -Property @{
Subscriptionid = $sub.Name
SubscriptionName = $subInfo.DisplayName
SubscriptionOwner = $subInfo.Owner
StartTime = $item.UsageStartTime
EndTime = $item.UsageEndTime
ResourceGroup = $matches[1]
Provider = $matches[2]
ResourceType = $matches[3]
ResourceName = $matches[4]
MeterId = $item.MeterId
Name = $item.Name
Quantity = $item.Quantity
Info = $data.additionalInfo
}
$usagedata += @($usagerec)
}
}
$usagedata