Как удалить связь между Azure AppInsights и службой приложений через PowerShell

У меня есть один ресурс AppInsights, который обслуживает ряд сервисов приложений (каждый сервис приложений представляет собой изолированную тестовую среду). Мы раскручиваем и уничтожаем эти сервисы приложений через PowerShell.

Сервисы приложений связаны с AppInsights через скрытые теги. При удалении службы приложений скрытый тег автоматически не удаляется. Ресурс имеет верхний предел в 15 тегов, что означает, что я должен удалить эти теги из AppInsights при разрушении среды.

Я могу просмотреть теги, как это:

PS Azure:\> $AppInsights = Get-AzureRmApplicationInsights -ResourceGroupName "foo" -Name "bar";

PS Azure:\> $AppInsights.Tags;

Key                                                                                    Value
---                                                                                                                                                                  -----
hidden-link:/subscriptions/xxx/resourceGroups/foo/providers/Microsoft.Web/sites/xxx    Resource
...

Поэтому я могу отредактировать эту хеш-таблицу, но, похоже, нет способа сохранить изменения обратно в Azure через PowerShell.

Есть ли другой способ сделать это?

1 ответ

Решение

Для этого нет прямого пути. Но вы можете использовать Set-AzureRmResource для достижения этой цели.

Во-первых, вы можете использовать Get-AzureRmApplicationInsights -ResourceGroupName "xxx" -Name "xxx" чтобы узнать свойства вашего приложения, обратите внимание, что тип, который будет использоваться позже:

И я также вижу, что у меня есть 5 тегов:

И я хочу, чтобы удалить один заканчивается appInsightsdemo11 "

Пример кода приведен ниже (вы можете изменить его в соответствии с вашими потребностями):

$a = Get-AzureRmApplicationInsights  -ResourceGroupName "xxx" -Name "xxx"

$b = $a.tags

# use $new_tags to store the tags which are not deleted
$new_tags=@{}

# if the key does not contain "appInsightsdemo11", it will not be deleted.
$b.Keys | %{ if(!$_.contains("appInsightsdemo11")){$new_tags.Add($_, $b[$_])}}

# then update the tags which does not have the one "appInsightsdemo11"
Set-AzureRmResource -ResourceGroupName "xxx" -ResourceName "xxx" -Tag $new_tags -force -ResourceType microsoft.insights/components

После выполнения вышеуказанной команды запустите командлет Get-AzureRmApplicationInsights снова. И вы можете видеть, что теги, содержащие appInsightsdemo11, были удалены.

Другие вопросы по тегам