在我的Azure开发/测试实验室(DTL)中,有许多资源未被标记。如何获取DTL /资源组下所有未标记资源的列表?
答案 0 :(得分:2)
这是一个简单的PowerShell循环来获取未标记的资源。
$resources = Get-AzureRmResource
foreach($resource in $resources)
{
if ($resource.Tags -eq $null)
{
echo $resource.Name, $resource.ResourceType
}
}
here描述了查询此信息以及以编程方式或作为资源部署的一部分设置标记的其他方法。
如果您想避免以未标记资源结束的情况,可以强制执行customized policy所有资源都应具有特定标记的值。
答案 1 :(得分:1)
此link有此问题的解决方案。它精美地解释了使用PowerShell分配和查询标签。
$ resourceGroupName ='InternalReportingRGDev'
$ azureRGInfo = Get-AzureRmResourceGroup -Name $ resourceGroupName foreach($ azureRGInfo中的$ item)
{
Find-AzureRmResource -ResourceGroupNameEquals $ item.ResourceGroupName | ForEach-Object {Set-AzureRmResource -ResourceId $ PSItem.ResourceId -Tag $ item.Tags -Force}
}
答案 2 :(得分:0)
< #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"
}
}
答案 3 :(得分:0)
以下是惯用的PowerShell,以补充@huysmania的答案,该答案以过程语言思维方式表示(并已针对新的PowerShell Az cmdlet更新):
Get-AzResource | Where-Object Tags -eq $null | Select-Object -Property Name, ResourceType
和简洁(别名)形式:
Get-AzResource | ? Tags -eq $null | select Name, ResourceType
答案 4 :(得分:0)
我通常只运行此命令以使用Get-AzResource
输出未标记资源的表。它使用Where-Object
使用标签$null
或为空的Azure资源进行筛选。
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
的替代。