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

如何使用Azure Resource Graph Query查询全订阅指定时段已删除VM

用Azure Resource Graph查询全订阅指定时段已删除虚拟机的方法

完全可以实现,不需要逐个订阅切换查询,Resource Graph默认会遍历你当前账号有权限访问的所有订阅资源和操作日志。

注意:Resource Graph关联的Azure活动日志默认保留90天,如果你要查询90天之前的删除记录,需要提前将活动日志导出到长期存储位置,直接用下面的语句查不到超期数据。

可用查询语句

直接把下面的Kusto查询粘贴到Resource Graph Explorer里,替换开头的起止时间为你需要的时间段即可:

// 替换为你要查询的时间范围,时间格式为YYYY-MM-DD
let queryStartTime = datetime("2024-01-01");
let queryEndTime = datetime("2024-06-30");
AzureActivity
| where TimeGenerated between (queryStartTime .. queryEndTime)
| where OperationNameValue == "MICROSOFT.COMPUTE/VIRTUALMACHINES/DELETE"
| where ActivityStatusValue == "Success" // 仅保留删除成功的记录,需要查删除失败的场景可以注释掉这行
| extend 虚拟机名称 = tostring(parse_json(Properties).resource)
| extend 所属订阅ID = SubscriptionId
| extend 所属资源组 = ResourceGroup
| extend 删除时间 = TimeGenerated
| extend 操作执行人 = tostring(parse_json(Properties).caller)
| project 删除时间, 虚拟机名称, 所属订阅ID, 所属资源组, 操作执行人, CorrelationId
| sort by 删除时间 desc

使用说明

  • 打开Azure门户,搜索进入「Resource Graph 资源浏览器」,将编辑区默认的示例语句清空后粘贴上面的代码
  • 修改开头的queryStartTime和queryEndTime为你实际要查询的时间区间
  • 点击「运行查询」,返回结果会包含删除操作的核心字段,如果需要其他字段可以自行在project语句里添加
  • 如果你需要同时查询虚拟机规模集的删除记录,可以把OperationNameValue的判断条件改成in ("MICROSOFT.COMPUTE/VIRTUALMACHINES/DELETE", "MICROSOFT.COMPUTE/VIRTUALMACHINESCALESETS/DELETE")

常见问题排查

  • 如果查询返回空结果,先确认对应时间范围内确实存在虚拟机删除操作,再检查当前账号是否对目标订阅有活动日志读取权限
  • 如果操作执行人字段显示为应用ID或者系统服务名,说明删除操作是自动化脚本、Azure平台服务触发的,不是人工操作
  • 如果你需要限定查询的订阅范围,可以在查询最开头加| where SubscriptionId in ("订阅ID1","订阅ID2")过滤即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 04:48:30