【问题标题】:Powershell get-winevent filterxpath wildcardPowershell get-winevent filterxpath 通配符
【发布时间】:2017-05-24 01:58:03
【问题描述】:

我正在尝试查询 DNS 日志以查看哪台本地计算机请求了包含 38.93.53.202-in-addr.arpa-nettlinx.com 的网站地址。我不知道这将在日志中采用什么形式,并且使用事件日志进行过滤让我无处可去(太慢了)。

我认为 powershell 可以帮助我解决这个问题!我已经导出了日志,这样我就可以在我每天做的时候留下一个备用系统来解析它。

到目前为止,我已经找到了一个几乎可以满足我要求的脚本。我使用日志中最重要的条目之一选择了我的测试:

<EventData>
  <Data Name="TCP">0</Data> 
  <Data Name="InterfaceIP">192.168.1.1</Data> 
  <Data Name="Destination">192.168.1.2</Data>
  <Data Name="QNAME">rss.weather.com.</Data>

我发现几乎有效的代码是:

Get-WinEvent -Path 'C:\users\user\desktop\evtlog.evtx' -FilterXPath "*[EventData[ Data[@Name='qname']='rss.weather.com.']]"

现在,我希望能够使用通配符来代替“rss.weather.com.”。例如,“天气”。但是,据我所知, filterxpath 标志不允许这样做。

我尝试添加我在互联网上看到的最常见的条目:

contains(.,'weather')

还有

contains(text(),'weather')

我几乎在代码的每个部分都尝试过这个,有括号,没有括号,有等号,没有,在 data[] 内部......我已经用尽了我能想到或找到的所有可能性XML 解析语言中的引用。

任何方法来执行我正在尝试的查询类型吗?我正在尝试找到一种方法来执行此预管道,因为日志的大小相当吓人。

编辑:这是我能想到的我尝试过的大部分迭代:

# Try 1
# "*[EventData[Data[@Name='qname' and contains(text(), 'weather')]]]"

# Try 2
# "*[EventData[ Data[@Name='qname'] contains(.,'weather')]]"

# Try 3
# "*[EventData[ Data[contains(.,'weather')]]]"

# Try 4
# "*[EventData[ Data[@Name='qname']=*[contains(.,'weather')]]]"

# Try 5
# "*[EventData[ Data[@Name='qname']=*contains(.,'weather')]]"

# Try 6
# "*[EventData[ Data[@Name='qname']=contains(.,'weather')]]"

# Try 7
# "*[EventData[ Data[@Name='qname']=[contains(.,'weather')]]]"

# Try 8
# "*[EventData[ contains(.,'weather') ]]"

# Try 9
# "*[EventData[ Data[@Name='qname'] like 'rss.weather.com.']]"

# Try 10
# "*[EventData[Data[@Name='QNAME']=*[contains(.,'rss.weather.com.')]]]"

# Try 11
# "*[EventData[ Data[@Name='qname']=*'weather.com.']]"

# Try 12
# "*[EventData[ Data[@Name='qname']=*['weather.com.']]]"

# Try 13
# "*[EventData[ Data[@Name='qname'] contains(.,'weather')]]"

# Try 14
# "*[EventData[ Data[@Name='qname'] [contains(.,'weather')]]]"

【问题讨论】:

  • 你试过EventData[Data[@Name='qname' and contains(text(), 'weather')]]吗?分享你的尝试
  • 我编辑了我的主要帖子以展示我尝试过的各种迭代。每个都会导致相同的错误:指定的查询无效。
  • 添加双斜杠 (//*) 会改变什么吗?
  • 我在几次迭代中添加了//,这只导致良好的查询失败。我试过"//*[EventData//"*[EventData"*[//EventData"*//[EventData——都返回了同样的问题。

标签: powershell xpath get-winevent


【解决方案1】:

我碰巧最近参加了有关 Powershell 的课程,并且能够通过电子邮件向我的导师发送同样的问题。他的回答很不幸,我的脚本不工作的原因是 xpath 不会接受通配符作为非标记值。

例如,如果XML的行是:

<Data Name="InterfaceIP">192.168.1.1</Data>

然后我可以对data name = *face* 进行通配符搜索,但不能对 之外的内容进行通配符搜索。

感谢大家的帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多