Как удалить связь между 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, были удалены.