You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何查询Azure订阅中无标签的所有虚拟机

如何查询Azure订阅中所有无标签的虚拟机?

你的原代码确实会列出所有无标签的Azure资源(比如网卡、负载均衡器这类),要只筛选出虚拟机的话,只需要加上资源类型的判断条件就行,这里给你两种实用的实现方式:

方式一:提前过滤虚拟机资源(推荐,更高效)

直接在Get-AzureRmResource命令里指定资源类型,这样不用遍历所有资源,执行速度更快:

# 获取所有虚拟机资源,再筛选无标签的实例
$vms = Get-AzureRmResource -ResourceType 'Microsoft.Compute/virtualMachines'
foreach($vm in $vms) {
    # PowerShell最佳实践:把$null放在左边,避免因变量类型问题导致判断出错
    if ($null -eq $vm.Tags) {
        Write-Output "无标签虚拟机名称: $($vm.Name)"
        # 也可以输出资源ID方便定位:Write-Output "无标签虚拟机: $($vm.Name) | 资源ID: $($vm.ResourceId)"
    }
}

方式二:在原代码基础上修改

如果你想保留遍历所有资源的逻辑,只需要在判断标签为空的同时,加上资源类型的校验:

$resources = Get-AzureRmResource
foreach($resource in $resources) {
    # 同时满足「是虚拟机」和「无标签」两个条件
    if ($resource.ResourceType -eq 'Microsoft.Compute/virtualMachines' -and $null -eq $resource.Tags) {
        Write-Output $resource.Name, $resource.ResourceType
    }
}

补充个小细节:尽量用$null -eq $vm.Tags而不是$vm.Tags -eq $null,这是PowerShell里的最佳实践,能避免一些因为变量类型(比如空集合)导致的判断错误。

内容的提问来源于stack exchange,提问作者bonafide

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 08:15:02