Попытка применить теги, которые установлены на уровне ГРУППЫ ресурсов, к любым ресурсам в группе ресурсов (все ресурсы).
Нашел скрипт в сети и изменил его минимально.
Долженубедитесь, что тег NAME и тег VALUE установлены на основе группы ресурсов (например: если группа ресурсов имеет имя тега «ABCD» и значение тега «1234», а ресурс под группой ресурсов имеет тег «ABCD» и тегзначение "4567", тогда оно должно перезаписать это значение на "1234") Существует один тег, который должен быть установлен на всех ресурсах.Имя, которое мы знаем, но значение, которого мы не знаем.
Я заметил, что для запуска требуется ДЛИННОЕ время.Группе ресурсов с 10 ресурсами в ней может потребоваться 1-2 минуты для запуска сценария с
Любые идеи или предложения?
#List all Resources within the Subscription
$Resources = Get-AzureRmResource
#For each Resource apply the Tag of the Resource Group
Foreach ($resource in $Resources)
{
$Rgname = $resource.Resourcegroupname
$resourceid = $resource.resourceId
$RGTags = (Get-AzureRmResourceGroup -Name $Rgname).Tags
$resourcetags = $resource.Tags
If ($resourcetags -eq $null)
{
Write-Output "---------------------------------------------"
Write-Output "Applying the following Tags to $($resourceid)" $RGTags
Write-Output "---------------------------------------------"
$Settag = Set-AzureRmResource -ResourceId $resourceid -Tag $RGTagS -Force
}
Else
{
$RGTagFinal = @{}
$RGTagFinal = $RGTags
Foreach ($resourcetag in $resourcetags.GetEnumerator())
{
If ($RGTags.Keys -inotcontains $resourcetag.Key)
{
Write-Output "------------------------------------------------"
Write-Output "Keydoesn't exist in RG Tags adding to Hash Table" $resourcetag
Write-Output "------------------------------------------------"
$RGTagFinal.Add($resourcetag.Key,$resourcetag.Value)
}
}
Write-Output "---------------------------------------------"
Write-Output "Applying the following Tags to $($resourceid)" $RGTagFinal
Write-Output "---------------------------------------------"
$Settag = Set-AzureRmResource -ResourceId $resourceid -Tag $RGTagFinal -Force
}
}
Несколько вещей, которые сценарий должен сделать тоже, которыея не уверен, что этот скрипт выполняет.
- Если ресурс уже имеет 15 тегов, он не будет перезаписывать тег с тегом уровня группы ресурсов;он просто пропустит это
- Вместо того, чтобы копировать ВСЕ теги из группы ресурсов в ресурс, есть только один тег.Можем ли мы поместить логику туда, где, если группа ресурсов имеет, например, тег «ABCDEFG», она скопирует его?Любые другие теги, которые это не будет?
- Возможно, чтобы ускорить это, возможно просто ПРОВЕРИТЬ, если имя и значение тега на уровне ресурса совпадает с тегом на уровне группы ресурсов, и не перезаписать егоесли это уже совпадает.Я подозреваю, что для записи требуется время, а просто чтение тегов - это не так.