pwsh/dev/functions/prepareData.ps1 (30 lines of code) (raw):
function prepareData {
Write-Host 'Preparing Data'
$startPreparingArrays = Get-Date
$script:optimizedTableForPathQuery = ($newTable | Select-Object -Property level, mg*, subscription*) | Sort-Object -Property level, mgid, subscriptionId -Unique
$hlperOptimizedTableForPathQuery = $optimizedTableForPathQuery.where( { -not [String]::IsNullOrEmpty($_.SubscriptionId) } )
$script:optimizedTableForPathQueryMgAndSub = ($hlperOptimizedTableForPathQuery | Select-Object -Property level, mg*, subscription*) | Sort-Object -Property level, mgid, mgname, mgparentId, mgparentName, subscriptionId, subscription -Unique
$script:optimizedTableForPathQueryMg = ($optimizedTableForPathQuery.where( { [String]::IsNullOrEmpty($_.SubscriptionId) } ) | Select-Object -Property level, mgid, mgName, mgparentid, mgparentName) | Sort-Object -Property level, mgid, mgname, mgparentId, mgparentName -Unique
$script:optimizedTableForPathQuerySub = ($hlperOptimizedTableForPathQuery | Select-Object -Property subscription*) | Sort-Object -Property subscriptionId -Unique
foreach ($entry in $optimizedTableForPathQuery) {
$mgSubs = $optimizedTableForPathQueryMgAndSub.where( { $_.mgId -eq $entry.mgId } )
$mgChildren = ($optimizedTableForPathQueryMg.where( { $_.mgParentId -eq $entry.mgId } )).MgId
$script:htMgDetails.($entry.mgId) = @{
subscriptionsCount = $mgSubs.Count
subscriptions = $mgSubs
details = $entry
mgChildren = $mgChildren
mgChildrenCount = $mgChildren.Count
}
}
foreach ($entry in $optimizedTableForPathQueryMgAndSub) {
$script:htSubDetails.($entry.SubscriptionId) = @{
details = $optimizedTableForPathQueryMgAndSub.where( { $_.SubscriptionId -eq $entry.SubscriptionId } )
}
}
$script:parentMgBaseQuery = ($optimizedTableForPathQueryMg.where( { $_.MgParentId -eq $getMgParentId } ))
$script:parentMgNamex = $parentMgBaseQuery.mgParentName | Get-Unique
$script:parentMgIdx = $parentMgBaseQuery.mgParentId | Get-Unique
$endPreparingArrays = Get-Date
Write-Host "Preparing Arrays duration: $((New-TimeSpan -Start $startPreparingArrays -End $endPreparingArrays).TotalMinutes) minutes ($((New-TimeSpan -Start $startPreparingArrays -End $endPreparingArrays).TotalSeconds) seconds)"
}