如何从多个Azure服务删除标签?

时间:2019-01-11 21:42:15

标签: azure azure-powershell

标题中的问题:如何从多个Azure服务中删除标签? 可以使用PowerShell或GUI。谢谢)

5 个答案:

答案 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
        }
    }
}