我有一个AppInsights资源,可提供一系列应用程序服务(每个应用程序服务代表一个隔离的测试环境)。我们通过PowerShell启动并销毁这些应用程序服务。
App服务通过隐藏标签链接到AppInsights。如果删除App Service,则不会自动删除隐藏的标签。资源的上限为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
...
因此我可以编辑该哈希表,但是似乎无法通过PowerShell将更改持久化回Azure。
还有另一种方法吗?
答案 0 :(得分:1)
没有直接的方法。但是您可以使用Set-AzureRmResource
来实现。
首先,您可以使用Get-AzureRmApplicationInsights -ResourceGroupName "xxx" -Name "xxx"
来获取应用数据洞察的属性,请注意稍后将使用的Type:
我还可以看到我有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
完成上述命令后,再次运行cmdlet Get-AzureRmApplicationInsights
。您会看到包含“ appInsightsdemo11”的标签已被删除。