使用KQL查询在Azure中显示未进行过去1个月补丁的虚拟机列表

51次阅读
没有评论

问题描述

想要使用Kusto查询语言(KQL)获取一个虚拟机列表,该列表显示自上个月以来未进行过补丁的虚拟机。他已经提供了一个查询示例,并希望在此基础上添加筛选条件以满足需求。

解决方案

请注意以下操作注意版本差异及修改前做好备份。

最佳解决方案

以下是一个基于用户提供的示例查询的改进版本,用于获取自上个月以来未进行过补丁的虚拟机列表:

Update
| where Classification in ("Security Updates", "Critical Updates")
| where UpdateState == 'Needed' and Optional == false and Approved == true
| where PublishedDate <= ago(30d)  // 添加筛选条件以限制到自上个月
| summarize count() by Classification, Computer, _ResourceId

这个查询在用户提供的基础上,添加了一个额外的筛选条件,即PublishedDate <= ago(30d),用于仅显示自上个月以来未进行过补丁的虚拟机。

其他解决方案

除了以上最佳解决方案外,还可以使用以下查询来获取相同的结果,这里使用了稍微不同的逻辑:

Update
| where Classification in ("Security Updates", "Critical Updates")
| where UpdateState == 'Needed' and Optional == false and Approved == true
| extend DaysSincePublished = todouble(now() - PublishedDate) / 1d
| where DaysSincePublished <= 30  // 限制结果显示自上个月以来未进行过补丁的虚拟机
| summarize count() by Classification, Computer, _ResourceId

这个查询使用了extend语句来计算每个更新距离发布的天数,并通过where DaysSincePublished <= 30筛选出自上个月以来未进行过补丁的虚拟机。

总结

使用KQL查询语言可以很方便地从Azure中获取虚拟机列表,并根据用户需求进行筛选和排序。在查询中添加适当的条件,如PublishedDate <= ago(30d)DaysSincePublished <= 30,可以帮助用户获取所需的未补丁虚拟机列表。通过理解和灵活运用KQL,用户可以更好地管理和监控其虚拟机环境。

正文完