Get-WinEvent -filterXPath 停止工作
Get-WinEvent -filterXPath stopped working
我正在尝试使用 Get-WinEvent
和 XPath 进行一些事件查询。昨天下班前我测试成功了,但是今天,不管我怎么试,它一直告诉我没有匹配的事件。
我仍然使用昨天打开的 PowerShell window 查询成功,甚至通过 shell 历史重复 相同的命令 也没有返回任何内容。
我无法使用任何 XPath 查询。简单的例子,这个returns千条事件记录:
$EventFilter = @{
Logname = 'Microsoft-Windows-TaskScheduler/Operational'
ProviderName = "Microsoft-Windows-TaskScheduler"
Id = 129
}
Get-WinEvent -FilterHashtable $EventFilter -verbose
但以下说法No events were found that match the specified selection criteria.
:
[xml]$XPath = @"
<QueryList>
<Query Id="0" Path="microsoft-windows-taskscheduler/operational">
<Select Path="microsoft-windows-taskscheduler/operational">*
[System/Provider[@Name='microsoft-windows-taskscheduler'] and
(System/EventID=129)]
</Select>
</Query>
</QueryList>
"@
Get-WinEvent -logname 'Microsoft-Windows-TaskScheduler/Operational' -FilterXPath $XPath
注意:我没有使用无效查询。上面的 xml 只是根据第一个 -verbose
开关显示的查询(构造和)重新格式化。最后,我需要使用 XPath,因为 -FilterHashtable
太有限了,但我什至无法让简单的 XPath 查询工作。
我开始为此焦头烂额。有什么可能阻止它在以前起作用时今天起作用?
谢谢。
您在使用 ISE 吗?您是否尝试过将其关闭、打开并重新运行您的脚本?
我在 ISE 上遇到过类似的奇怪问题,它似乎不想放弃变量等,但关闭它却奏效了。
您可以使用两个不同(但相似)的参数。您正在使用的 -FilterXPath
只需要提供过滤器。所以,你的例子应该是:
$XPath = "*[System/Provider[@Name='microsoft-windows-taskscheduler'] and (System/EventID=129)]"
Get-WinEvent -logname 'Microsoft-Windows-TaskScheduler/Operational' -FilterXPath $XPath
另一种方法是使用 -FilterXml
,它采用您最初拥有的完整查询 XML(但没有 -LogName
参数):
$XPath = @"
<QueryList>
<Query Id="0" Path="microsoft-windows-taskscheduler/operational">
<Select Path="microsoft-windows-taskscheduler/operational">*
[System/Provider[@Name='microsoft-windows-taskscheduler'] and
(System/EventID=129)]
</Select>
</Query>
</QueryList>
"@
Get-WinEvent -FilterXml $XPath
我正在尝试使用 Get-WinEvent
和 XPath 进行一些事件查询。昨天下班前我测试成功了,但是今天,不管我怎么试,它一直告诉我没有匹配的事件。
我仍然使用昨天打开的 PowerShell window 查询成功,甚至通过 shell 历史重复 相同的命令 也没有返回任何内容。
我无法使用任何 XPath 查询。简单的例子,这个returns千条事件记录:
$EventFilter = @{
Logname = 'Microsoft-Windows-TaskScheduler/Operational'
ProviderName = "Microsoft-Windows-TaskScheduler"
Id = 129
}
Get-WinEvent -FilterHashtable $EventFilter -verbose
但以下说法No events were found that match the specified selection criteria.
:
[xml]$XPath = @"
<QueryList>
<Query Id="0" Path="microsoft-windows-taskscheduler/operational">
<Select Path="microsoft-windows-taskscheduler/operational">*
[System/Provider[@Name='microsoft-windows-taskscheduler'] and
(System/EventID=129)]
</Select>
</Query>
</QueryList>
"@
Get-WinEvent -logname 'Microsoft-Windows-TaskScheduler/Operational' -FilterXPath $XPath
注意:我没有使用无效查询。上面的 xml 只是根据第一个 -verbose
开关显示的查询(构造和)重新格式化。最后,我需要使用 XPath,因为 -FilterHashtable
太有限了,但我什至无法让简单的 XPath 查询工作。
我开始为此焦头烂额。有什么可能阻止它在以前起作用时今天起作用?
谢谢。
您在使用 ISE 吗?您是否尝试过将其关闭、打开并重新运行您的脚本?
我在 ISE 上遇到过类似的奇怪问题,它似乎不想放弃变量等,但关闭它却奏效了。
您可以使用两个不同(但相似)的参数。您正在使用的 -FilterXPath
只需要提供过滤器。所以,你的例子应该是:
$XPath = "*[System/Provider[@Name='microsoft-windows-taskscheduler'] and (System/EventID=129)]"
Get-WinEvent -logname 'Microsoft-Windows-TaskScheduler/Operational' -FilterXPath $XPath
另一种方法是使用 -FilterXml
,它采用您最初拥有的完整查询 XML(但没有 -LogName
参数):
$XPath = @"
<QueryList>
<Query Id="0" Path="microsoft-windows-taskscheduler/operational">
<Select Path="microsoft-windows-taskscheduler/operational">*
[System/Provider[@Name='microsoft-windows-taskscheduler'] and
(System/EventID=129)]
</Select>
</Query>
</QueryList>
"@
Get-WinEvent -FilterXml $XPath