我正在尝试使用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查询工作。
我开始把头发扯出来了。当它以前起作用的时候,有什么能阻止它在今天发挥作用呢?
谢谢。
发布于 2018-04-17 13:54:26
您可以使用两个不同的(但类似的)参数。您使用的-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发布于 2018-04-17 13:37:34
你在用ISE吗?你试过关闭它,打开并重新运行您的脚本吗?
我在ISE中也遇到过类似的奇怪问题,似乎它不想放弃变量,等等,并且关闭它是有效的。
https://stackoverflow.com/questions/49879490
复制相似问题