Как получить все ресурсы Azure без тегов в группе ресурсов Azure

В моей лаборатории разработки и тестирования Azure (DTL) есть много ресурсов, которые не были помечены. Как я могу получить список всех немаркированных ресурсов в DTL / группе ресурсов?


person DevX    schedule 14.09.2017    source источник


Ответы (5)


Вот простой цикл PowerShell для получения немаркированных ресурсов.

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

Другие способы запроса этой информации, а также установки тегов программно или как часть развертывания ресурсов описаны здесь.

Если вы хотите избежать ситуации, когда в итоге получаются немаркированные ресурсы, вы можете применить настроенная политика, согласно которой все ресурсы должны иметь значение для определенного тега.

person huysmania    schedule 15.09.2017

Вот идиоматическая оболочка PowerShell, дополняющая ответ @ huysmania, который выражается в процедурном языке мышления (и обновлен для новых командлетов PowerShell Az):

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

и краткая (псевдоним) форма:

Get-AzResource | ? Tags -eq $null | select Name, ResourceType
person JohnC    schedule 19.12.2019

‹#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"
    }
 }
person Pankaj negi    schedule 23.05.2018
comment
$resource уже имеет член тега. Нет необходимости в $tagcount=(get-AzureRmResource | where-object {$_.Name -match $resource.Name}).Tags.count. Это неэффективно и медленно, потому что для поиска тега текущего ресурса необходимо выполнять поиск по каждому ресурсу. Вы можете получить счет просто с помощью $tagcount = $resource.Tags.Count. - person RoadRunner; 14.04.2020

Обычно я просто запускаю эту команду, чтобы вывести таблицу немаркированных ресурсов, используя _ 1_. Он фильтрует ресурсы Azure с помощью $null или пустых тегов, используя _ 3_.

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, который заменяет AzureRM.

person RoadRunner    schedule 14.04.2020

Эта ссылка есть решение для этого вопроса. Он прекрасно объясняет назначение и запрос тегов с помощью PowerShell.

$ resourceGroupName = 'InternalReportingRGDev'

$ azureRGInfo = Get-AzureRmResourceGroup -Name $ resourceGroupName foreach ($ item в $ azureRGInfo)

{

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

}

person DevX    schedule 24.09.2017
comment
Сценарий PowerShell имеет недопустимый синтаксис, что не подходит для принятого ответа - person JohnC; 19.12.2019