如何通过Kusto查询获取目标机器最新TimeGenerated的应用状态?
调整查询以获取机器最新时间点的应用信息
你的原查询问题在于:summarize arg_max(TimeGenerated, *) by ComputerName_s, AppName_s 是按机器+应用分组,保留每个应用在该机器上的最后一条记录——哪怕这个应用已经在机器的最新时间点被卸载,它之前的最后一条记录依然会被保留,所以才会返回2023年12月1日的旧数据。
要获取机器最新TimeGenerated时间点的应用信息,需要先定位该机器的最新时间戳,再筛选这个时间点的所有应用记录,调整后的查询如下:
// 定义目标机器名称,方便后续修改 let target_computer = "xxxxxx"; // 获取目标机器的最新TimeGenerated时间戳 let latest_time = toscalar( YourTable // 替换成你的实际表名 | where ComputerName_s == target_computer | summarize max(TimeGenerated) ); // 筛选目标机器在最新时间点的应用记录 YourTable | where ComputerName_s == target_computer and TimeGenerated == latest_time | project ComputerName_s, AppName_s, AppVersion_s, TimeGenerated
逻辑说明:
- 用
toscalar函数提取目标机器的最新时间戳,确保我们只关注这个时间点的上报数据 - 直接筛选该机器在这个时间点的所有应用,已经卸载的应用不会出现在最新时间点的上报记录中,因此不会被返回
- 如果目标机器在最新时间点有多条上报记录(比如同一时刻的多条数据),该查询会保留所有符合条件的记录,符合实际上报场景
内容的提问来源于stack exchange,提问作者Alessandro Zola
相关产品推荐
相关产品推荐

