【问题标题】:get All resources on azure powershell whose Tags start with (or include) a particular String - Azure Powershell获取 azure powershell 上其标签以(或包含)特定字符串开头的所有资源 - Azure Powershell
【发布时间】:2018-11-11 21:08:57
【问题描述】:

我有近 20 个 azure 资源,其中 4 个已被赋予标签@

{"Office1work"="work"}
{"Office2practice"="Practice"}
{"Office3practice"="Practice"}
{"Office4practice"="Practice"}

现在我想获取标签名称以关键字“Office”开头的资源。 我知道通过 TagName 获取资源,例如“hello”,我只需使用以下命令,

get-azureRmResource -TagName "Hello"

如何使用 get-azurermresource 的 -Tagname 属性为我提供标签以关键字“Office”开头的所有资源?

或者有没有其他好的方法来获取标签以特定字符串开头的所有资源?

谢谢:)

【问题讨论】:

    标签: azure powershell azure-powershell


    【解决方案1】:

    你可以使用这个代码sn-p:

    $resources = Get-AzureRmResources
    $resources.foreach{ if ($PSItem.tags.keys -match '^Office') { $PSItem } }
    

    首先获取订阅中的所有资源,然后过滤掉所有标签与“Office”“表达式”不匹配的资源。

    正如@LotPings 指出的那样,在不保存到临时变量的情况下进行过滤可能更有意义:

    $resources = Get-AzureRmResources|Where-Object {$_.tags.keys -match "^Office"}
    

    另外,我没有注意到您要求使用starts with 过滤器,因此您应该使用^Office 作为更严格的过滤器(如果需要)。

    【讨论】:

    • $resources = Get-AzureRmResources|Where-Object {$_.tags.keys -match "^Office"} 会不会更有效率?
    • 好吧,你可以用^Office作为过滤器,当然,我,老实说,没注意到他说starts with我以为是contains。至于 where 过滤器,是的,它可能会,但除非你有数十万个对象,否则它并不重要(除非你有一个非常糟糕的电脑)@LotPings
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多