递归列出 Azure 资源组中的所有资源标签

时间:2021-04-14 22:34:16

标签: azure tags azure-powershell azure-cli azureportal

我们有大量 Azure 订阅,目前已达到数百个。

我希望生成一份报告(最好使用 Azure Powershell 或 Azure CLI)以递归提取分配给每个资源组中每个资源的所有标签的列表,用于 40-50 个订阅。

目前,我可以列出在资源组级别分配的所有标签,但我根本找不到列出分配给每个资源组内各个资源的标签的方法。我想从中提取此报告的订阅和资源组列表保存在一个 CSV 文件中,该文件包括两列,分别显示订阅名称和资源组。

有关如何实现上述目标的任何提示都非常棒,非常感谢。

1 个答案:

答案 0 :(得分:1)

不是详细的代码,而是这里的想法。

1.你应该写一个循环,在循环中,每次使用这个cmdlet改变subscription

Set-AzContext -Subscription $subscription_name

2.然后使用此 cmdlet 获取指定 resource group 中的所有 subscription

$resource_groups = Get-AzResourceGroup

3.然后写一个嵌套循环(loop for each resource group),在这个嵌套循环中,使用这个cmdlet得到一个azure resources内的所有resource group

foreach($rg in $resource_groups){
   $azure_resources = Get-AzResource -ResourceGroupName $rg.ResourceGroupName
}

4.在步骤3中再写一个嵌套循环,这个循环用于遍历指定azure resources内的所有resource group。然后使用下面的代码为 azure resource 中的每个 resource group 获取标签:

foreach($r in $azure_resources){
     #the following code can get all the tags for one resource
     $r.tags

}