代码之家  ›  专栏  ›  技术社区  ›  Teknowledgist

Get-WinEvent-filterXPath停止工作

  •  0
  • Teknowledgist  · 技术社区  · 8 年前

    我正在尝试使用 Get-WinEvent 和XPath。昨天下班前,我成功地测试了它,但今天,无论我尝试什么,它总是告诉我没有匹配的事件。

    我仍然可以从昨天开始打开PowerShell窗口,查询成功,甚至可以重复 相同的命令 via 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查询。

    我开始对这件事大发雷霆了。有什么可能阻止它在以前工作的今天工作?

    谢谢

    2 回复  |  直到 8 年前
        1
  •  1
  •   boxdog    8 年前

    您可以使用两个不同(但相似)的参数。这个 -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
    
        2
  •  0
  •   Alen    8 年前

    你在用ISE吗?您是否尝试关闭、打开并重新运行脚本?

    我在ISE上也遇到过类似的奇怪问题,它似乎不想放弃变量,等等,而关闭它是可行的。