Functions/Get-Subscription.ps1
function Get-Subscription { trap {Out-Error $_; continue;} $allSubscriptions = Get-AzureRmSubscription -TenantId $currentTenantId; if ($subscriptions) { $totalSubscriptionsFound = $subscriptions.Count; } else { $totalSubscriptionsFound = $allSubscriptions.Count; } Add-Log "No of subscriptions to process for tenant $currentTenantId : $totalSubscriptionsFound" "subscriptions"; $totalSubscriptionsProcessed = 0; foreach ($subscription in $allSubscriptions) { trap {Out-Error $_; continue;} if (!$subscriptions -or $subscriptions.contains($subscription.Id) -or $subscriptions.contains($subscription.Name)) { Set-AzureRmContext -Subscription $subscription.Id | Out-Null $subscriptionId = $subscription.Id; $subscriptionName = $subscription.Name; Write-Progress -Activity "Scanning Subscriptions" -Id 4 -CurrentOperation "Processing subscription: $subscriptionName" -Status "Subscriptions in current tenant: $totalSubscriptionsProcessed of $totalSubscriptionsFound" -PercentComplete (($totalSubscriptionsProcessed / $totalSubscriptionsFound) * 100) $resourceGroups = Get-AzureRmResourceGroup; $totalResourceGroupsFound = $resourceGroups.Count; Add-Log "No of resource groups found in subscription $subscriptionName ($subscriptionId): $totalResourceGroupsFound" "resourcegroups"; $totalResourceGroupsProcessed = 0; foreach ($resourceGroup in $resourceGroups) { trap {Out-Error $_; continue;} $resourceGroupName = $resourceGroup.ResourceGroupName; Write-Progress -Activity "Scanning Resource Groups" -Id 5 -CurrentOperation "Processing resource group: $resourceGroupName" -Status "Resource groups in current subscription: $totalResourceGroupsProcessed of $totalResourceGroupsFound" -PercentComplete (($totalResourceGroupsProcessed / $totalResourceGroupsFound) * 100) if (!$sections -or $sections.Contains("as")) { Get-AppService; Add-Log "Processed App service certificates in resource group $resourceGroupName" "resourcegroups"; } if (!$sections -or $sections.Contains("kv")) { Get-KeyVault; Add-Log "Processed Key vaults (keys, secrets and certificates) in resource group $resourceGroupName" "resourcegroups"; } if (!$sections -or $sections.Contains("ad")) { Join-AppSettingActiveDirectory; Add-Log "Cross referenced web apps against AD applications in resource group $resourceGroupName" "resourcegroups"; } $totalResourceGroupsProcessed++; Add-Log "processed resource group in subscription $subscriptionName ($subscriptionId): $resourceGroupName" "resourcegroups"; } Add-Log "No of resource groups processed in subscription $subscriptionName ($subscriptionId): $totalResourceGroupsProcessed" "resourcegroups"; $totalSubscriptionsProcessed++; Add-Log "processed subscription in tenant $currentTenantId : $subscriptionName ($subscriptionId)" "subscriptions"; } } Add-Log "No of subscriptions processed in tenant $currentTenantId : $totalSubscriptionsProcessed" "subscriptions"; } |