在Azure Log Analytics中,我试图分析由Task Scheduler创建的事件,并按执行任务的名称对它们进行分组。
基本查询如下
Event
| where Source == "Microsoft-Windows-TaskScheduler"
and TimeGenerated > ago(24h)
and EventLog == "Microsoft-Windows-TaskScheduler/Operational"
and EventID == 201
我正在努力按照计划任务的名称对结果进行分组,因为名称包含在ParameterXML
和EventData
属性的XML编码数据中,这些属性具有以下格式: / p>
ParamterXML:
<Param>\MyScheduledTasksName</Param>
<Param>{1F1893C6-0696-430C-9738-50B068DDE37B}</Param>
<Param>C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe</Param>
<Param>0</Param>
<Param>9684</Param>
EventData:
<DataItem type="System.XmlData" time="2019-06-13T11:18:45.4806563+02:00" sourceHealthServiceId="D4165670-2EBA-67E0-FF6B-1D838007CE5B">
<EventData Name="ActionSuccess" xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
<Data Name="TaskName">\MyScheduledTasksName</Data>
<Data Name="TaskInstanceId">{1F1893C6-0696-430C-9738-50B068DDE37B}</Data>
<Data Name="ActionName">C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe</Data>
<Data Name="ResultCode">0</Data><Data Name="EnginePID">9684</Data>
</EventData>
</DataItem>
我将如何解析XML任务名称,以便将其用于管道中的分组/汇总?
答案 0 :(得分:2)
这是将parse_xml()
与mv-apply
结合使用以仅访问XML有效负载中特定元素的示例,例如TaskName
在这种情况下:
datatable(id:int, EventData:string)
[
1, '<DataItem type="System.XmlData" time="2019-06-13T11:18:45.4806563+02:00" sourceHealthServiceId="D4165670-2EBA-67E0-FF6B-1D838007CE5B">\n <EventData Name="ActionSuccess" xmlns="http://schemas.microsoft.com/win/2004/08/events/event">\n <Data Name="TaskName">\\MyScheduledTasksName</Data>\n <Data Name="TaskInstanceId">{1F1893C6-0696-430C-9738-50B068DDE37B}</Data>\n <Data Name="ActionName">C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe</Data>\n <Data Name="ResultCode">0</Data><Data Name="EnginePID">9684</Data>\n </EventData>\n</DataItem>',
2, '<DataItem type="System.XmlData" time="2019-06-13T11:18:45.4806563+02:00" sourceHealthServiceId="D4165670-2EBA-67E0-FF6B-1D838007CE5B">\n <EventData Name="ActionSuccess" xmlns="http://schemas.microsoft.com/win/2004/08/events/event">\n <Data Name="TaskName">\\MyOtherTask</Data>\n <Data Name="TaskInstanceId">{1F1893C6-0696-430C-9738-50B068DDE37B}</Data>\n <Data Name="ActionName">C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe</Data>\n <Data Name="ResultCode">0</Data><Data Name="EnginePID">9684</Data>\n </EventData>\n</DataItem>'
]
| mv-apply EventData = parse_xml(EventData).DataItem.EventData.Data on
(
where EventData['@Name'] == 'TaskName'
| project TaskName = EventData['#text']
)
上面的查询返回下表:
| id | TaskName |
|----|-----------------------|
| 1 | \MyScheduledTasksName |
| 2 | \MyOtherTask |
答案 1 :(得分:1)
似乎您正在寻找parse_xml()函数:https://docs.microsoft.com/en-us/azure/kusto/query/parse-xmlfunction