0

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 : 指定的查询无效

4

1 回答 1

2

尝试包含功能:

$x = [xml] '<root><books><book title="Foo" /></books></root>'
$x.SelectSingleNode('//book[contains(@title, oo)]')

xpath 字符串函数的参考:http: //msdn.microsoft.com/en-us/library/ms256180.aspx

你的可能看起来像:

"*[EventData[contains(Data,'\Microsoft\Windows\Diagnosis\Scheduled')]]"  
于 2012-04-20T21:58:06.467 回答