如何获取 Azure 资源组中所有没有标签的 Azure 资源

How to get all Azure Resources without tags in a Azure Resource Group

在我的 Azure dev/test 实验室 (DTL) 中,有许多未标记的资源。如何获取 DTL/resource 组下所有未标记资源的列表?

这是获取未标记资源的简单 PowerShell 循环。

$resources = Get-AzureRmResource
foreach($resource in $resources)
{
    if ($resource.Tags -eq $null)
    {
        echo $resource.Name, $resource.ResourceType
    }
}

描述了查询此信息以及以编程方式或作为资源部署的一部分设置标签的其他方法here

如果您想避免出现未标记资源的情况,您可以强制执行 customized policy 所有资源都应具有特定标记的值。

这个 link 有这个问题的答案。它很好地解释了使用 powershell 分配和查询标签。

$resourceGroupName = 'InternalReportingRGDev'

$azureRGInfo = Get-AzureRmResourceGroup -名称 $resourceGroupName foreach($azureRGInfo 中的项目)

{

查找-AzureRmResource -ResourceGroupNameEquals $item.ResourceGroupName | ForEach-Object {Set-AzureRmResource -ResourceId $PSItem.ResourceId -Tag $item.Tags -Force }

}

<#Bellow 是用于定位未标记资源的 PowerShell 脚本 - 您可以根据您的要求更改输出的脚本。 希望一定有帮助。谢谢!#>

Write-Host "List all resource where Tag value is not Set"
Write-Host "********************************************"
#Fetch all resource details
$resources=get-AzureRmResource
foreach ($resource in $resources) {
    $tagcount=(get-AzureRmResource | where-object {$_.Name -match $resource.Name}).Tags.count
    if($tagcount -eq 0) {
        Write-Host "Resource Name - "$resource.Name
        Write-Host "Resource Type and RG Name : " $resource.resourcetype " & " $resource.resourcegroupname "`n"
    }
 }

这是补充@huysmania 的答案的惯用 PowerShell,它以过程语言思维方式表达(并针对新的 PowerShell Az cmdlet 进行了更新):

Get-AzResource | Where-Object Tags -eq $null | Select-Object -Property Name, ResourceType

和简洁(别名)形式:

Get-AzResource | ? Tags -eq $null | select Name, ResourceType

我通常只是 运行 这个命令使用 Get-AzResource. It filters Azure resources with tags that are $null or empty using Where-Object 输出 table 个未标记的资源。

Get-AzResource `
    | Where-Object {$null -eq $_.Tags -or $_.Tags.Count -eq 0} `
    | Format-Table -AutoSize

如果要列出特定 资源组 的未标记资源,只需将 -ResourceGroupName 开关添加到 Get-AzResource

$resourceGroupName = "My Resource Group"

Get-AzResource -ResourceGroupName $resourceGroupName `
    | Where-Object {$null -eq $_.Tags -or $_.Tags.Count -eq 0} `
    | Format-Table -AutoSize

注:以上使用较新的Azure PowerShell Az module,替代AzureRM