Powershell get-winevent filterxpath 通配符
Powershell get-winevent filterxpath wildcard
我正在尝试查询 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 标志不允许这样做。
我已经尝试添加我在 Internet 上看到的最常见条目:
contains(.,'weather')
以及
contains(text(),'weather')
我几乎在代码的每个部分都尝试过这个,有括号,没有括号,有等号,没有,在数据[]内......我已经用尽了我能想到的所有可能性或在 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')]]]"
我最近刚好上了一门关于 Powershell 的课程,并且能够通过电子邮件向我的讲师发送同样的问题。他以一个不幸的答案回应我的脚本不工作的原因是因为 xpath 不接受非标记值的通配符。
例如,如果XML行是:
<Data Name="InterfaceIP">192.168.1.1</Data>
然后我可以对 data name = *face*
进行通配符搜索,但我不能对 <> 之外的内容进行通配符搜索。
谢谢大家的帮助!
我正在尝试查询 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 标志不允许这样做。
我已经尝试添加我在 Internet 上看到的最常见条目:
contains(.,'weather')
以及
contains(text(),'weather')
我几乎在代码的每个部分都尝试过这个,有括号,没有括号,有等号,没有,在数据[]内......我已经用尽了我能想到的所有可能性或在 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')]]]"
我最近刚好上了一门关于 Powershell 的课程,并且能够通过电子邮件向我的讲师发送同样的问题。他以一个不幸的答案回应我的脚本不工作的原因是因为 xpath 不接受非标记值的通配符。
例如,如果XML行是:
<Data Name="InterfaceIP">192.168.1.1</Data>
然后我可以对 data name = *face*
进行通配符搜索,但我不能对 <> 之外的内容进行通配符搜索。
谢谢大家的帮助!