[英]Get-WinEvent -filterXPath stopped working
我正在尝试使用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
开关显示的查询(构造和)重新格式化了。 最后,由于-FilterHashtable
太有限,我需要使用XPath,但是我什至无法使简单的XPath查询正常工作。
我开始为此扯头发。 有什么可能阻止它在以前起作用的今天起作用?
谢谢。
您可以使用两个不同(但相似)的参数。 您正在使用的-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
您在使用ISE吗? 您是否尝试将其关闭,打开并重新运行脚本?
我在ISE上也遇到过类似的怪异问题,好像它不想放开变量,等等,并且将其关闭是可行的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.