Modules/Private/1.ExtractionFunctions/Invoke-ARIInventoryLoop.ps1
<#
.Synopsis Module responsible for looping through Azure Resource Graph queries. .DESCRIPTION This module is used to loop through Azure Resource Graph queries and retrieve resources in batches. .Link https://github.com/microsoft/ARI/Modules/Private/1.ExtractionFunctions/Invoke-ARIInventoryLoop.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 Invoke-ARIInventoryLoop { param($GraphQuery, $FSubscri, $LoopName, $Debug) $DebugPreference = 'SilentlyContinue' Write-Progress -Id 1 -activity 'Azure Inventory' -Status "1% Complete." -PercentComplete 1 -CurrentOperation ('Extracting: ' + $LoopName) $ReportCounter = 1 $LocalResults = @() if($FSubscri.count -gt 200) { $SubLoop = $FSubscri.count / 200 $SubLooper = 0 $NStart = 0 $NEnd = 200 while ($SubLooper -lt $SubLoop) { $Sub = $FSubscri[$NStart..$NEnd] try { Write-Debug ((get-date -Format 'yyyy-MM-dd_HH_mm_ss')+' - '+'Extracting First 1000 Resources') $QueryResult = Search-AzGraph -Query $GraphQuery -first 1000 -Subscription $Sub -InformationAction SilentlyContinue -ProgressAction SilentlyContinue } catch { Write-Debug ((get-date -Format 'yyyy-MM-dd_HH_mm_ss')+' - '+'Extracting First 200 Resources') $QueryResult = Search-AzGraph -Query $GraphQuery -first 200 -Subscription $Sub -InformationAction SilentlyContinue -ProgressAction SilentlyContinue } $LocalResults += $QueryResult while ($QueryResult.SkipToken) { $ReportCounterVar = [string]$ReportCounter try { Write-Debug ((get-date -Format 'yyyy-MM-dd_HH_mm_ss')+' - '+'Extracting Next 1000 Resources. Loop Number: ' + $ReportCounterVar) Write-Progress -Id 1 -activity ('Extracting: ' + $LoopName) -Status "$ReportCounter% Complete." -PercentComplete $ReportCounter $QueryResult = Search-AzGraph -Query $GraphQuery -SkipToken $QueryResult.SkipToken -Subscription $Sub -first 1000 -InformationAction SilentlyContinue -ProgressAction SilentlyContinue } catch { Write-Debug ((get-date -Format 'yyyy-MM-dd_HH_mm_ss')+' - '+'Extracting Next 200 Resources. Loop Number: ' + $ReportCounterVar) Write-Progress -Id 1 -activity ('Extracting: ' + $LoopName) -Status "$ReportCounter% Complete." -PercentComplete $ReportCounter $QueryResult = Search-AzGraph -Query $GraphQuery -SkipToken $QueryResult.SkipToken -Subscription $Sub -first 200 -InformationAction SilentlyContinue -ProgressAction SilentlyContinue } $LocalResults += $QueryResult } $NStart = $NStart + 200 $NEnd = $NEnd + 200 $SubLooper ++ $ReportCounter ++ } } else { try { Write-Debug ((get-date -Format 'yyyy-MM-dd_HH_mm_ss')+' - '+'Extracting First 1000 Resources') $QueryResult = Search-AzGraph -Query $GraphQuery -first 1000 -Subscription $FSubscri -InformationAction SilentlyContinue -ProgressAction SilentlyContinue } catch { Write-Debug ((get-date -Format 'yyyy-MM-dd_HH_mm_ss')+' - '+'Extracting First 200 Resources') $QueryResult = Search-AzGraph -Query $GraphQuery -first 200 -Subscription $FSubscri -InformationAction SilentlyContinue -ProgressAction SilentlyContinue } $LocalResults += $QueryResult while ($QueryResult.SkipToken) { $ReportCounterVar = [string]$ReportCounter try { Write-Debug ((get-date -Format 'yyyy-MM-dd_HH_mm_ss')+' - '+'Extracting Next 1000 Resources. Loop Number: ' + $ReportCounterVar) Write-Progress -Id 1 -activity ('Extracting: ' + $LoopName) -Status "$ReportCounter% Complete." -PercentComplete $ReportCounter $QueryResult = Search-AzGraph -Query $GraphQuery -SkipToken $QueryResult.SkipToken -Subscription $FSubscri -first 1000 -InformationAction SilentlyContinue -ProgressAction SilentlyContinue } catch { Write-Debug ((get-date -Format 'yyyy-MM-dd_HH_mm_ss')+' - '+'Extracting Next 200 Resources. Loop Number: ' + $ReportCounterVar) Write-Progress -Id 1 -activity ('Extracting: ' + $LoopName) -Status "$ReportCounter% Complete." -PercentComplete $ReportCounter $QueryResult = Search-AzGraph -Query $GraphQuery -SkipToken $QueryResult.SkipToken -Subscription $FSubscri -first 200 -InformationAction SilentlyContinue -ProgressAction SilentlyContinue } $LocalResults += $QueryResult $ReportCounter ++ } } Write-Progress -Id 1 -activity ('Extracting: ' + $LoopName) -Status "100% Complete." -Completed return $LocalResults } |