Files
Cloud-20Engineering/Powershell/Lists/Azure/ServiceBus.ps1
Jurjen Ladenius Effectory 812b3ce2e9 Merged PR 59544: Fix type in servicebus script #117926
Fix type in servicebus script #117926

Related work items: #117926
2025-05-15 06:59:57 +00:00

129 lines
6.6 KiB
PowerShell

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] $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.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 = $topic.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 = $topicSub.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 = $queue.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."