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

需求:编写KQL查询统计Windows安全事件日志中含指定文本的列及次数

KQL查询:统计各字段中指定文本的出现次数

通用实现方案

以下KQL查询可自动遍历表中所有字段,统计指定文本在每个字段中的出现次数,无需手动列出所有列:

// 替换为目标查找文本
let TargetText = "mouse";
// 替换为你的目标表名
YourTableName
| extend AllColumns = pack_all() // 将每行所有字段打包为键值对集合
| mv-apply ColumnName, Value = bag_unpack(AllColumns) on (
    project ColumnName, Value = tostring(Value) // 统一转换为字符串,避免类型不兼容
    | where Value == TargetText // 精确匹配目标文本;如需包含匹配,替换为 Value contains TargetText
)
| summarize Occurrences = count() by ColumnName
| sort by Occurrences desc // 按出现次数降序排列

示例验证

针对你提供的SampleTable,执行以下查询:

let TargetText = "mouse";
SampleTable
| extend AllColumns = pack_all()
| mv-apply ColumnName, Value = bag_unpack(AllColumns) on (
    project ColumnName, Value = tostring(Value)
    | where Value == TargetText
)
| summarize Occurrences = count() by ColumnName
| sort by Occurrences desc

将得到预期结果:

ColumnName | Occurrences
-----------|------------
col_3      | 2
col_1      | 1

Windows SecurityEvents日志场景适配

针对Azure Sentinel中SecurityEvents日志查找计算机名存储字段的需求,调整表名和目标值即可,同时可根据实际需求选择匹配规则:

// 替换为目标计算机名
let TargetComputer = "YOUR_TARGET_COMPUTER_NAME";
SecurityEvents
| where TimeGenerated between (ago(7d) and now()) // 添加时间过滤优化性能
| extend AllFields = pack_all()
| mv-apply FieldName, FieldValue = bag_unpack(AllFields) on (
    project FieldName, FieldValue = tostring(FieldValue)
    | where FieldValue contains TargetComputer // 包含匹配,适配字段中嵌入计算机名的场景
    // 如需精确匹配,替换为:| where FieldValue == TargetComputer
)
| summarize OccurrenceCount = count() by FieldName
| sort by OccurrenceCount desc

注意事项

  • 区分大小写匹配:将contains替换为contains_cs,精确匹配时用==(区分大小写)或==~(不区分大小写)
  • 大型数据集优化:务必添加时间范围过滤(如TimeGenerated),避免查询性能瓶颈
  • 类型兼容处理:tostring()确保所有字段值转为字符串,避免数值、布尔等非字符串类型导致的匹配失败

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 05:00:31