modules/Private/1.ExtractionFunctions/Get-ARIManagementGroups.ps1

<#
.Synopsis
Module responsible for retrieving Azure Management Groups.
 
.DESCRIPTION
This module retrieves Azure Management Groups and their associated subscriptions.
 
.Link
https://github.com/microsoft/ARI/Modules/Private/1.ExtractionFunctions/Get-ARIManagementGroups.ps1
 
.COMPONENT
This PowerShell Module is part of Azure Resource Inventory (ARI).
 
.NOTES
Version: 3.6.8
First Release Date: 15th Oct, 2024
Authors: Claudio Merola
#>

function Get-ARIManagementGroups {
    Param ($ManagementGroup)

    Write-Debug ((get-date -Format 'yyyy-MM-dd_HH_mm_ss')+' - '+'Management group name supplied: ' + $ManagementGroup)
    $ReportCounter = 1
    $LocalResults = @()

    $GraphQuery = "resourcecontainers | where type == 'microsoft.resources/subscriptions' | mv-expand managementGroupParent = properties.managementGroupAncestorsChain | where managementGroupParent.name =~ '$($ManagementGroup)'"
    $QueryResult = Search-AzGraph -Query $GraphQuery -first 1000 -Debug:$false
    $LocalResults += $QueryResult

    while ($QueryResult.SkipToken) {
        $ReportCounterVar = [string]$ReportCounter
        Write-Debug ((get-date -Format 'yyyy-MM-dd_HH_mm_ss')+' - '+'Extracting Next 1000 Subscriptions. Loop Number: ' + $ReportCounterVar)
        $QueryResult = Search-AzGraph -Query $GraphQuery -SkipToken $QueryResult.SkipToken -Subscription $FSubscri -first 1000 -Debug:$false
        $LocalResults += $QueryResult
        $ReportCounter ++
    }

    $SubscriptionList = $LocalResults.subscriptionId

    return $SubscriptionList
}