我希望能够使用XPath从事件查看器中过滤XML。
首先,我抓住了这个事件:
$events = Get-WinEvent -FilterHashtable @{LogName="Security"; id=4624} | Select -First 2
[xml]$xmlEvent = $events[0].ToXml()
现在我想获取登录类型为2的事件。
一种工作正常的方法是:
($xmlEvent.Event.EventData.Data | Where-Object {$_.Name -eq "LogonType"}).'#text' -eq 2
但我希望能够使用XPath,因为我想了解如何使用它。
这是我最初尝试过的:
PS C:\Windows\system32> Select-Xml -Xml $xmlEvent -XPath "*"
Node Path Pattern
---- ---- -------
Event InputStream *
我收到的活动很好,但现在我想添加过滤器 我试过了:
Select-Xml -Xml $xmlEvent -XPath "*/Event[EventData[@Name='LogonType'] = 2]"
根本没有输出,我也尝试了以下内容并且没有收到任何输出:
Select-Xml -Xml $xmlEvent -XPath "/Event[EventData[@Name='LogonType'] = 2]"
Select-Xml -Xml $xmlEvent -XPath "/Event"
Select-Xml -Xml $xmlEvent -XPath "//Event"
Select-Xml -Xml $xmlEvent -XPath "*/Event"
我使用的参考:
Understanding XML and XPath
Search XML files with PowerShell using Select XML