internal/functions/Remove-HydrationChildHierarchy.ps1
function Remove-HydrationChildHierarchy { [CmdletBinding()] param ( [Parameter(Mandatory = $true)] $ChildHierarchy ) foreach ($child in $ChildHierarchy) { if ($child.Type -eq "Microsoft.Management/managementGroups") { # Error action included because timeouts happen frequently, but mean nothing. Rather than have responses cause concern, we simply suppress the error. if ($child.children) { Write-Information " Removing child objects of $($child.Name) -- $($child.children.Name -join ", ")..." try { Write-Debug "Starting Inner Loop" $null = Remove-HydrationChildHierarchy -ChildHierarchy $child.children #-erroraction silentlycontinue Write-Debug "Leaving Inner Loop" } catch { write-error $_ } } do { Write-Information " Removing $($child.Name)..." $null = Remove-AzManagementGroup -GroupName $($child.Name) try { $null = Get-AzManagementGroupRestMethod -GroupId $($child.Name) -ErrorAction SilentlyContinue } catch { if ($_.Exception.Message -match "NotFound") { Write-Information " $($child.Name) confirmed to be removed..." $complete = $true } else { Write-Information " $($child.Name) generated an error during deletion, retrying $(6-$i) more times..." $complete = $false $i++ } } # } }until($true -eq $complete -or $i -eq 6) } } } |