【发布时间】:2022-01-17 07:54:13
【问题描述】:
我似乎能够找到单独更新每个资源标签的解决方案。但我不知道如何同时做很多标签。帮忙?
【问题讨论】:
-
这些帖子指向通过 for 循环的迭代,以将标签应用于每个资源。我正在寻找将它们同时应用于多个资源的修复程序。
标签: azure powershell microsoft-graph-api
我似乎能够找到单独更新每个资源标签的解决方案。但我不知道如何同时做很多标签。帮忙?
【问题讨论】:
标签: azure powershell microsoft-graph-api
带有 ResourceId 的 Update-AzTag cmdlet 选择性地更新资源或订阅上的标签集。此操作允许替换、合并或有选择地删除指定资源或订阅上的标签。
1.如果您想要替换订阅中所有资源的标签,您可以使用以下 PowerShell 脚本。
connect-azaccount
$replacedTags= @{"key1"="value1"; "key3"="value3"}
$resourcelist= Get-AzResource
foreach($item in $resourcelist){
Update-Aztag -ResourceId $item.ResourceId -Tag $replacedTags -Operation Replace
}
这是示例输出供参考:
2.如果您想要替换特定标签,您可以参考下面的 PowerShell 脚本。
$replacedTags= @{"key3"="value3"}
$resourcelist= Get-AzResource
foreach($item in $resourcelist){
$existtags=(Get-AzTag -ResourceId $item.ResourceId)
if(($existtags.Properties.TagsProperty.Values -contains 'value1') -and ( $existtags.Properties.TagsProperty.Keys -contains 'key1'))
{
Update-Aztag -ResourceId $item.ResourceId -Tag $replacedTags -Operation Replace
}
}
这是示例输出供参考:
3.如果您想要合并特定标签,可以参考下面的 PowerShell 脚本。
$mergedTags=@{"key2"="value2"; "key3"="value3"}
$resourcelist= Get-AzResource
foreach($item in $resourcelist){
$existtags=(Get-AzTag -ResourceId $item.ResourceId)
if(($existtags.Properties.TagsProperty.Values -contains 'key1') -and ( $existtags.Properties.TagsProperty.Keys -contains 'value1'))
{
Update-AzTag -ResourceId $item.ResourceId -Tag $mergedTags -Operation Merge
}
}
【讨论】:
ForEach -Parallel 这应该在 Windows Powershell 工作流中构建。这是参考documentation 了解更多信息。我们已经在本地环境中对此进行了测试,运行良好这里是截图供参考i.stack.imgur.com/lvmQu.png
Foreach-object -parallel 来并行执行作业,这里是参考文档。 devblogs.microsoft.com/powershell/…