标题中的问题:如何从多个Azure服务中删除标签? 可以使用PowerShell或GUI。谢谢)
答案 0 :(得分:4)
使用Remove-AzureRmTag或现在使用Remove-AzTag只会删除预定义的标签和值,而不会从资源资源中删除该标签。该脚本将查找所有带有部门标记的资源:跨多个订阅进行计费,并从资源中删除该标记。
$subs = Get-AzSubscription
$tagname = "department"
$tagvalue = "accounting"
$subs | % {
Set-AzContext $_
$rs = Get-AzResource -TagName $tagname -TagValue $tagvalue
$rs | % {
$_.Tags.Remove($tagname)
$_ | Set-AzResource -Force
}
}
答案 1 :(得分:0)
您可以使用powershell来实现:
Remove-AzureRmTag [-Name] <String> [[-Value] <String[]>] [-PassThru] [-DefaultProfile <IAzureContextContainer>] [-WhatIf] [-Confirm] [<CommonParameters>]
答案 2 :(得分:0)
Azure门户用户界面可用于编辑和删除资源中的标记。也可以使用Azure PowerShell SDK或Azure CLI命令行工具编写脚本,以自动化该过程。
var sequelize = new Sequelize(nconf.get('database:db'), nconf.get('database:user'), nconf.get('database:pass'), {
port: nconf.get('database:port'),
pool: {
min: 1,
max: 60,
idle: 100000
},
define: {
charset: 'utf8mb4',
timestamps: false,
dialectOptions: {
collate: 'utf8mb4_general_ci'
}
},
dialect: 'mariadb',
dialectOptions: {
supportBigNumbers: true,
bigNumberStrings: true
},
benchmark: false,
logging: false
})
PowerShell命令可用于从所有资源中删除特定的标记。下面是从所有资源中删除名为“部门”的标记的示例:
Remove-AzureRmTag
有关Azure PowerShell SDK的其他文档,可以在这里找到:https://docs.microsoft.com/en-us/powershell/module/azurerm.tags/remove-azurermtag?view=azurermps-6.13.0
答案 3 :(得分:0)
# That's a method that deletes the tag from your resource.
function Remove-TagsFromResource ($tagname, $tagvalue) {
$resources = Get-AzResource -TagName $tagname -TagValue $tagvalue
foreach ($resource in $resources) {
Write-Host "Removing tag from " $resource.Name
$deletedtag = @{"$tagname" = "$tagvalue" }
Update-AzTag -ResourceId $resource.ResourceId -Tag $deletedtag -Operation Delete
Write-Host "Tag removed from " $resource.Name -ForegroundColor Green
}
}
# This is how you call the method
Remove-TagsFromResource -tagName "Key" -tagvalue "Value"
尝试这个。经过测试,可以正常工作。
答案 4 :(得分:0)
Remove-AzureRmTag / Remove-AzTag仅在没有带标记的资源/资源组的情况下才适用于订阅。 此外,AzureRM Powershell模块已过时,不应再使用。
下面是我用来从订阅中删除标签或标签字典的脚本。
您可以仅使用TagName删除标签,这将删除订阅中具有该标签的所有资源上该标签的所有实例。如果为脚本提供TagName和TagValue,则可以删除具有特定值的特定标签。如果将对象传递给脚本,则会删除该对象中列出的所有键值对。
如您所见,您现在可以根据标签名称或标签名称+值过滤Get-AzResource。目前,您只能使用标签对象过滤Get-AzResourceGroup。
使用Update-AzTag方法的好处是,您只需要具有读取权限和Microsoft的用户即可。在您正在操作的范围内,资源/标签/写入。
这已经通过Az Powershell 5.1版进行了测试
[CmdletBinding()]
param (
[Parameter(Mandatory)]
[string]
$SubscriptionName,
[Parameter(ParameterSetName = "TagName", Mandatory)]
[Parameter(ParameterSetName = "TagValue", Mandatory)]
[string]
$TagName,
[Parameter(ParameterSetName = "TagValue", Mandatory)]
[string]
$TagValue,
[Parameter(ParameterSetName = "TagObject", Mandatory)]
[object]
$Tag
)
Set-AzContext -SubscriptionName $SubscriptionName -ErrorAction:Stop
switch ($PSCmdlet.ParameterSetName) {
"TagName" {
Get-AzResourceGroup | Where-Object { $null -ne $_.Tags -and $_.Tags.ContainsKey("$TagName") } | ForEach-Object {
$_.Tags.Remove("$TagName")
Update-AzTag -ResourceId $_.ResourceId -Tag $_.Tags -Operation Replace
}
Get-AzResource -TagName "$TagName" | ForEach-Object {
$_.Tags.Remove("$TagName")
Update-AzTag -ResourceId $_.Id -Tag $_.Tags -Operation Replace
}
}
"TagValue" {
Get-AzResourceGroup -Tag @{"$TagName" = "$TagValue" } | ForEach-Object {
Update-AzTag -ResourceId $_.ResourceId -Tag @{"$TagName" = "$TagValue" } -Operation Delete
}
Get-AzResource -Tag @{"$TagName" = "$TagValue" } | ForEach-Object {
Update-AzTag -ResourceId $_.Id -Tag @{"$TagName" = "$TagValue" } -Operation Delete
}
}
"TagObject" {
Get-AzResourceGroup -Tag $Tag | ForEach-Object {
Update-AzTag -ResourceId $_.ResourceId -Tag $Tag -Operation Delete
}
Get-AzResource -Tag $Tag | ForEach-Object {
Update-AzTag -ResourceId $_.Id -Tag $Tag -Operation Delete
}
}
}