Как составить список групп ресурсов по Azure подпискам с помощью PowerShell? - PullRequest
2 голосов
/ 08 мая 2020

Я пишу сценарий PowerShell для перечисления групп ресурсов по Azure подпискам.

Get-AzureRmSubscription | 
select -ExpandProperty name |
 % { 
     Get-AzureRmResourceGroup | select -ExpandProperty resourcegroupname
 }

Этот код работает. Он возвращает такие результаты.

Resource group 1     
Resource group 2
Resource group 3 

Как я могу настроить код, чтобы получить результат, как показано ниже?

Subscription 1,Resource group 1     
Subscription 1,Resource group 2
Subscription 2,Resource group 3 

Большое вам спасибо.

Ответы [ 2 ]

3 голосов
/ 08 мая 2020

Добавление к @ mklement отличный ответ, вот как вы бы сделали это с последним Azure модулем PowerShell Az вместо AzureRM:

Get-AzSubscription | ForEach-Object {
    $subscriptionName = $_.Name
    Set-AzContext -SubscriptionId $_.SubscriptionId
    (Get-AzResourceGroup).ResourceGroupName | ForEach-Object {     
        [PSCustomObject] @{
            Subscription = $subscriptionName
            ResourceGroup = $_
        }
    }
}

Чтобы перейти на активную подписку, мы можем изменить контекст с помощью Set-AzContext и передать SubscriptionId From Get-AzSubscription. Также должна быть возможность обойтись без передачи имени подписки с помощью Set-AzContext -Subscription $subscriptionName.

Если вы хотите запускать команды AzureRM с модулем Az, вы можете запустить Enable-AzureRmAlias, что позволяет использовать префиксы AzureRM с модулями Az.

2 голосов
/ 08 мая 2020

Непроверено:

Get-AzureRmSubscription | 
 % { 
   $subscrName = $_.Name
   Select-AzureSubscription -Current -SubscriptionName $name
   (Get-AzureRmResourceGroup).resourcegroupname | % {     
     [pscustomobject] @{
       Subscription = $subscrName
       ResourceGroup = $_
     }
   }
 }

Примечание. Приведенное выше изменяет текущую подписку сеанса. В вашем реальном коде вы можете впоследствии восстановить предыдущий текущий.

Вышеупомянутый вывод выводит настраиваемые объекты со свойствами .Subscription и .ResourceGroup; если вы действительно хотите выводить только строки, используйте:
"$name,$_"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...