我正在尝试使用Get-WinEvent
和XPath进行一些事件查询。我在昨天离开工作之前成功地测试了它,但今天,无论我尝试什么,它一直告诉我没有匹配的事件。
我仍然从昨天开始使用PowerShell窗口成功查询,甚至通过shell历史记录重复相同的命令也没有返回任何内容。
我无法使用任何XPath查询。简单的例子,这将返回数以千计的事件记录:
$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查询起作用。
我开始把头发拉出来了。什么可能阻止它在今天工作之前工作?
感谢。
答案 0 :(得分:1)
您可以使用两种不同(但相似)的参数。您使用的-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
答案 1 :(得分:0)
您使用的是ISE吗?您是否尝试将其关闭,打开并重新运行脚本?
我和ISE有类似的奇怪问题,似乎它不想放弃变量等等,并将其关闭。