fix: fetch all groups via -AllPages for large tenants
Replaces default 100-item page limits and =999 workarounds with -AllPages on group queries across assignment and baseline scripts. Enables full fzf inline search/filter for group selection.
This commit is contained in:
@@ -277,9 +277,9 @@ if($Mode -eq "Backup")
|
|||||||
|
|
||||||
# Preload groups for name resolution in backup
|
# Preload groups for name resolution in backup
|
||||||
Write-Host "`nLoading groups for backup resolution..." -ForegroundColor Cyan
|
Write-Host "`nLoading groups for backup resolution..." -ForegroundColor Cyan
|
||||||
$backupGroupsResponse = Invoke-GraphRequest "/groups?`$select=id,displayName&`$top=999"
|
$backupGroupsResponse = Invoke-GraphRequest "/groups?`$select=id,displayName&`$orderby=displayName" -AllPages
|
||||||
$backupGroups = @{}
|
$backupGroups = @{}
|
||||||
foreach($g in $backupGroupsResponse.value)
|
foreach($g in $backupGroupsResponse)
|
||||||
{
|
{
|
||||||
$backupGroups[$g.id] = $g.displayName
|
$backupGroups[$g.id] = $g.displayName
|
||||||
}
|
}
|
||||||
@@ -382,8 +382,8 @@ elseif($Mode -eq "Restore")
|
|||||||
|
|
||||||
# Resolve group names to IDs in current tenant if needed
|
# Resolve group names to IDs in current tenant if needed
|
||||||
Write-Host "`nLoading current tenant groups for name resolution..." -ForegroundColor Cyan
|
Write-Host "`nLoading current tenant groups for name resolution..." -ForegroundColor Cyan
|
||||||
$currentGroupsResponse = Invoke-GraphRequest "/groups?`$select=id,displayName&`$top=999"
|
$currentGroupsResponse = Invoke-GraphRequest "/groups?`$select=id,displayName&`$orderby=displayName" -AllPages
|
||||||
$currentGroups = $currentGroupsResponse.value
|
$currentGroups = $currentGroupsResponse
|
||||||
|
|
||||||
$success = 0
|
$success = 0
|
||||||
$skipped = 0
|
$skipped = 0
|
||||||
|
|||||||
@@ -252,8 +252,8 @@ Write-Host "Selected $($selectedApps.Count) apps." -ForegroundColor Green
|
|||||||
|
|
||||||
#region Load Groups
|
#region Load Groups
|
||||||
Write-Host "`nLoading Azure AD groups..." -ForegroundColor Cyan
|
Write-Host "`nLoading Azure AD groups..." -ForegroundColor Cyan
|
||||||
$groupsResponse = Invoke-GraphRequest "/groups?`$select=id,displayName&`$orderby=displayName"
|
$groupsResponse = Invoke-GraphRequest "/groups?`$select=id,displayName&`$orderby=displayName" -AllPages
|
||||||
$groups = $groupsResponse.value | Where-Object { $_.displayName } | Sort-Object displayName
|
$groups = $groupsResponse | Where-Object { $_.displayName } | Sort-Object displayName
|
||||||
Write-Host "Found $($groups.Count) groups." -ForegroundColor Green
|
Write-Host "Found $($groups.Count) groups." -ForegroundColor Green
|
||||||
|
|
||||||
$groupDisplayNames = $groups | ForEach-Object { "$($_.displayName) [$($_.id)]" }
|
$groupDisplayNames = $groups | ForEach-Object { "$($_.displayName) [$($_.id)]" }
|
||||||
|
|||||||
@@ -295,8 +295,8 @@ Write-Host "Selected $($selectedObjects.Count) objects." -ForegroundColor Green
|
|||||||
|
|
||||||
#region Load groups & filters
|
#region Load groups & filters
|
||||||
Write-Host "`nLoading Azure AD groups..." -ForegroundColor Cyan
|
Write-Host "`nLoading Azure AD groups..." -ForegroundColor Cyan
|
||||||
$groupsResponse = Invoke-GraphRequest "/groups?`$select=id,displayName&`$orderby=displayName"
|
$groupsResponse = Invoke-GraphRequest "/groups?`$select=id,displayName&`$orderby=displayName" -AllPages
|
||||||
$groups = $groupsResponse.value | Where-Object { $_.displayName } | Sort-Object displayName
|
$groups = $groupsResponse | Where-Object { $_.displayName } | Sort-Object displayName
|
||||||
Write-Host "Found $($groups.Count) groups." -ForegroundColor Green
|
Write-Host "Found $($groups.Count) groups." -ForegroundColor Green
|
||||||
|
|
||||||
Write-Host "`nLoading assignment filters..." -ForegroundColor Cyan
|
Write-Host "`nLoading assignment filters..." -ForegroundColor Cyan
|
||||||
|
|||||||
@@ -378,8 +378,8 @@ $groupCache = @{}
|
|||||||
if($baseline.ContainsKey("groups") -and $baseline["groups"])
|
if($baseline.ContainsKey("groups") -and $baseline["groups"])
|
||||||
{
|
{
|
||||||
Write-Host "`nResolving groups..." -ForegroundColor Cyan
|
Write-Host "`nResolving groups..." -ForegroundColor Cyan
|
||||||
$existingGroupsResp = Invoke-GraphRequest "/groups?`$select=id,displayName&`$orderby=displayName&`$top=999"
|
$existingGroupsResp = Invoke-GraphRequest "/groups?`$select=id,displayName&`$orderby=displayName" -AllPages
|
||||||
$existingGroups = $existingGroupsResp.value
|
$existingGroups = $existingGroupsResp
|
||||||
|
|
||||||
foreach($grpDef in $baseline["groups"])
|
foreach($grpDef in $baseline["groups"])
|
||||||
{
|
{
|
||||||
@@ -413,8 +413,8 @@ if($baseline.ContainsKey("groups") -and $baseline["groups"])
|
|||||||
|
|
||||||
#region Pre-load all existing groups for assignment resolution
|
#region Pre-load all existing groups for assignment resolution
|
||||||
Write-Host "`nPre-loading group directory..." -ForegroundColor Cyan
|
Write-Host "`nPre-loading group directory..." -ForegroundColor Cyan
|
||||||
$allGroupsResp = Invoke-GraphRequest "/groups?`$select=id,displayName&`$orderby=displayName&`$top=999"
|
$allGroupsResp = Invoke-GraphRequest "/groups?`$select=id,displayName&`$orderby=displayName" -AllPages
|
||||||
foreach($g in $allGroupsResp.value)
|
foreach($g in $allGroupsResp)
|
||||||
{
|
{
|
||||||
if(-not $groupCache.ContainsKey($g.displayName))
|
if(-not $groupCache.ContainsKey($g.displayName))
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -242,8 +242,8 @@ if(-not $selectedTypeTitles)
|
|||||||
}
|
}
|
||||||
|
|
||||||
Write-Host "`nLoading groups for name resolution..." -ForegroundColor Cyan
|
Write-Host "`nLoading groups for name resolution..." -ForegroundColor Cyan
|
||||||
$groupsResponse = Invoke-GraphRequest "/groups?`$select=id,displayName&`$top=999"
|
$groupsResponse = Invoke-GraphRequest "/groups?`$select=id,displayName&`$orderby=displayName" -AllPages
|
||||||
$groups = $groupsResponse.value
|
$groups = $groupsResponse
|
||||||
|
|
||||||
$reportRows = @()
|
$reportRows = @()
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user