Windows 事件可以通过 XPATH 进行过滤(这是一种快速搜索)。我已成功使用 PowerSHell Cmdlet Get-WinEvent 过滤,其中特定值是特定值,如下所示
$qry = "*[(EventData/Data[@Name='TaskName'] ='\Microsoft\Windows\Diagnosis\Scheduled') ]"
Get-WinEvent -LogName Microsoft-Windows-TaskScheduler/Operational -FilterXPath $qry -ErrorAction SilentlyContinue -MaxEvents 3
但是,我真的不想按特定任务名称过滤,而是按它的子字符串、包含的开头或其他内容进行过滤。例如,在上述场景中,我想做 "startswith" \Microsoft\Windows\Diagnosis 。然而,我尝试过的所有不同技术,似乎都是标准的 XPATH 1.0 语法,例如
$qry = "*[starts-with(EventData/Data[@Name='TaskName'] ,'\Microsoft\Windows\Diagnosis') ]"
报错 Get-WinEvent : 指定的查询无效