Import-Module Az.Accounts Import-Module Az.Automation Import-Module Az.ServiceBus Import-Module Az.Resources $subscriptions = Get-AzSubscription class ResourceCheck { [string] $ResourceId = "" [string] $ManagementGroupId = "" [string] $ManagementGroupName = "" [string] $SubscriptionId = "" [string] $SubscriptionName = "" [string] $ResourceGroup = "" [string] $RespourceType = "" [string] $Location = "" [string] $Tag_Team = "" [string] $Tag_Product = "" [string] $Tag_Environment = "" [string] $Tag_Data = "" [string] $Tag_Deployment = "" [string] $Tag_CreatedOnDate = "" [string] $ServiceBusName = "" [string] $TopicName = "" [string] $TopicSubscriptionName = "" [string] $QueueName = "" } Write-Host "======================================================================================================================================================================" Write-Host "Creating service bus resource overview." Write-Host "======================================================================================================================================================================" [string] $date = Get-Date -Format "yyyy-MM-dd HHmm" $fileName = ".\$date azure service bus.csv" $managementGroups = Get-AzManagementGroup foreach ($managementGroup in $managementGroups) { Write-Host "----------------------------------------------------------------------------------------------------------------------------------------------------------------------" Write-Host "Management group [$($managementGroup.Name)]" $subscriptions = Get-AzManagementGroupSubscription -Group $managementGroup.Name | Where-Object State -eq "Active" foreach ($subscription in $subscriptions) { Write-Host "----------------------------------------------------------------------------------------------------------------------------------------------------------------------" $scope = $subscription.Id.Substring($subscription.Parent.Length, $subscription.Id.Length - $subscription.Parent.Length) $subscriptionId = $scope.Replace("/subscriptions/", "") Write-Host "Subscription [$($subscription.DisplayName) - $subscriptionId]" Set-AzContext -SubscriptionId $subscriptionId | Out-Null Write-Host "----------------------------------------------------------------------------------------------------------------------------------------------------------------------" $servicebusses = Get-AzServiceBusNamespaceV2 foreach ($servicebus in $servicebusses) { Write-Host "Getting info for service bus [$($servicebus.Name)]" [ResourceCheck[]]$Result = @() [ResourceCheck] $resourceCheck = [ResourceCheck]::new() $resourceCheck.ResourceId = $servicebus.Id $resourceCheck.ManagementGroupId = $managementGroup.Id $resourceCheck.ManagementGroupName = $managementGroup.DisplayName $resourceCheck.SubscriptionId = $subscription.Id $resourceCheck.SubscriptionName = $subscription.DisplayName $resourceCheck.ResourceGroup = $servicebus.ResourceGroupName $resourceCheck.RespourceType = $servicebus.Type $resourceCheck.Location = $servicebus.Location $resourceCheck.Tag_Team = $servicebus.Tags.team $resourceCheck.Tag_Product = $servicebus.Tags.product $resourceCheck.Tag_Environment = $servicebus.Tags.environment $resourceCheck.Tag_Data = $servicebus.Tags.data $resourceCheck.Tag_CreatedOnDate = $servicebus.Tags.CreatedOnDate $resourceCheck.Tag_Deployment = $servicebus.Tags.drp_deployment $resourceCheck.ServiceBusName = $servicebus.Name $Result += $resourceCheck #topics $topics = Get-AzServiceBusTopic -NamespaceName $servicebus.Name -ResourceGroupName $servicebus.ResourceGroupName foreach ($topic in $topics) { [ResourceCheck] $resourceCheck = [ResourceCheck]::new() $resourceCheck.ResourceId = $servicebus.Id $resourceCheck.ManagementGroupId = $managementGroup.Id $resourceCheck.ManagementGroupName = $managementGroup.DisplayName $resourceCheck.SubscriptionId = $subscription.Id $resourceCheck.SubscriptionName = $subscription.DisplayName $resourceCheck.ResourceGroup = $servicebus.ResourceGroupName $resourceCheck.RespourceType = $servicebus.Type $resourceCheck.Location = $servicebus.Location $resourceCheck.ServiceBusName = $servicebus.Name $resourceCheck.TopicName = $topic.Name $Result += $resourceCheck # topic subscriptions $topicSubs = Get-AzServiceBusSubscription -NamespaceName $servicebus.Name -ResourceGroupName $servicebus.ResourceGroupName -TopicName $topic.Name foreach ($topicSub in $topicSubs) { [ResourceCheck] $resourceCheck = [ResourceCheck]::new() $resourceCheck.ResourceId = $servicebus.Id $resourceCheck.ManagementGroupId = $managementGroup.Id $resourceCheck.ManagementGroupName = $managementGroup.DisplayName $resourceCheck.SubscriptionId = $subscription.Id $resourceCheck.SubscriptionName = $subscription.DisplayName $resourceCheck.ResourceGroup = $servicebus.ResourceGroupName $resourceCheck.RespourceType = $servicebus.Type $resourceCheck.Location = $servicebus.Location $resourceCheck.ServiceBusName = $servicebus.Name $resourceCheck.TopicName = $topic.Name $resourceCheck.TopicSubscriptionName = $topicSub.Name $Result += $resourceCheck } } # queues $queues = Get-AzServiceBusQueue -NamespaceName $servicebus.Name -ResourceGroupName $servicebus.ResourceGroupName foreach ($queue in $queues) { [ResourceCheck] $resourceCheck = [ResourceCheck]::new() $resourceCheck.ResourceId = $servicebus.Id $resourceCheck.ManagementGroupId = $managementGroup.Id $resourceCheck.ManagementGroupName = $managementGroup.DisplayName $resourceCheck.SubscriptionId = $subscription.Id $resourceCheck.SubscriptionName = $subscription.DisplayName $resourceCheck.ResourceGroup = $servicebus.ResourceGroupName $resourceCheck.RespourceType = $servicebus.Type $resourceCheck.Location = $servicebus.Location $resourceCheck.ServiceBusName = $servicebus.Name $resourceCheck.QueueName = $queue.Name $Result += $resourceCheck } $Result | Export-Csv -Path $fileName -Append -NoTypeInformation } } } Write-Host "======================================================================================================================================================================" Write-Host "Done."