Modules/Public/PublicFunctions/Jobs/Start-ARISubscriptionJob.ps1
<#
.Synopsis Start Subscription Job Module .DESCRIPTION This script processes and creates the Subscriptions sheet based on resources and their subscriptions. .Link https://github.com/microsoft/ARI/Modules/Public/PublicFunctions/Jobs/Start-ARISubscriptionJob.ps1 .COMPONENT This powershell Module is part of Azure Resource Inventory (ARI) .NOTES Version: 3.6.0 First Release Date: 15th Oct, 2024 Authors: Claudio Merola #> function Start-ARISubscriptionJob { param($Subscriptions, $Resources, $CostData) $ResTable = $Resources | Where-Object { $_.type -notin ('microsoft.advisor/recommendations', 'ARI/VM/Quotas', 'ARI/VM/SKU', 'Microsoft.Advisor/advisorScore', 'Microsoft.ResourceHealth/events', 'microsoft.support/supporttickets' )} $resTable2 = $ResTable | Select-Object id, Type, location, resourcegroup, subscriptionid $ResTable3 = $ResTable2 | Group-Object -Property type, location, resourcegroup, subscriptionid if (![string]::IsNullOrEmpty($CostData.ActualCost.Row)) { $tmp = foreach ($ResourcesSUB in $ResTable3) { $ResourceDetails = $ResourcesSUB.name -split ", " foreach ($Cost in $CostData) { if($Cost.SubscriptionId -eq $ResourceDetails[3]) { Foreach ($Row in $Cost.ActualCost.Row) { if ($Row[2] -eq $ResourceDetails[0] -and $Row[3] -eq $ResourceDetails[2]) { Foreach ($Currency in $Row[4]) { $Date0 = [datetime]$Row[1] $DateMonth = ((Get-Culture).DateTimeFormat.GetMonthName(([datetime]$Date0).ToString("MM"))).ToString() $DateYear = (([datetime]$Date0).ToString("yyyy")).ToString() $obj = @{ 'Subscription' = $Cost.Subscription; 'Resource Group' = $ResourceDetails[2]; 'Location' = $ResourceDetails[1]; 'Resource Type' = $ResourceDetails[0]; 'Resources Count'= $ResourcesSUB.Count; 'Currency' = $Currency; 'Cost' = $Row[0]; 'Year' = $DateYear; 'Month' = $DateMonth } $obj } } } } } } } else { $tmp = foreach ($ResourcesSUB in $ResTable3) { $ResourceDetails = $ResourcesSUB.name -split "," $SubName = $Subscriptions | Where-Object { $_.Id -eq ($ResourceDetails[3] -replace (" ", "")) } $obj = @{ 'Subscription' = $SubName.Name; 'Resource Group' = $ResourceDetails[2]; 'Location' = $ResourceDetails[1]; 'Resource Type' = $ResourceDetails[0]; 'Resources Count'= $ResourcesSUB.Count } $obj } } $tmp } |