繁体   English   中英

Get-WinEvent -filterXPath停止工作

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM