Modules/Private/Extraction/Get-AZTIManagementGroups.ps1
|
<#
.Synopsis Module responsible for retrieving Azure Management Groups. .DESCRIPTION This module retrieves Azure Management Groups and their associated subscriptions. .Link https://github.com/thisismydemo/azure-scout/Modules/Private/1.ExtractionFunctions/Get-AZSCManagementGroups.ps1 .COMPONENT This PowerShell Module is part of Azure Scout (AZSC). .NOTES Version: 3.6.11 First Release Date: 15th Oct, 2024 Authors: Claudio Merola #> function Get-AZSCManagementGroups { Param ($ManagementGroup,$Subscriptions) Write-Debug ((get-date -Format 'yyyy-MM-dd_HH_mm_ss')+' - '+'Management group name: ' + $ManagementGroup) $GraphQuery = "resourcecontainers | where type == 'microsoft.resources/subscriptions' | mv-expand managementGroupParent = properties.managementGroupAncestorsChain | where managementGroupParent.name =~ '$($ManagementGroup)'" # Page through the full result set via SkipToken — an unpaged -first 1000 call # silently drops every subscription past 1000 in a large management group (AB#5076). $LocalResults = @() $QueryResult = Search-AzGraph -Query $GraphQuery -first 1000 -Debug:$false $LocalResults += $QueryResult while ($QueryResult.SkipToken) { $QueryResult = Search-AzGraph -Query $GraphQuery -first 1000 -SkipToken $QueryResult.SkipToken -Debug:$false $LocalResults += $QueryResult } if ($LocalResults.Count -lt 1) { # Throw a terminating error rather than Exit, which would kill the whole # host / automation runbook uncatchably (AB#5077). throw "No Subscriptions found for Management Group: '$ManagementGroup'. Verify the management group name and try again." } else { Write-Debug ((get-date -Format 'yyyy-MM-dd_HH_mm_ss')+' - '+'Subscriptions found for Management Group: ' + $LocalResults.Count) $FinalSubscriptions = foreach ($Sub in $Subscriptions) { if ($Sub.name -in $LocalResults.name) { $Sub } } } return $FinalSubscriptions } |