Powershell - 如何读取 XML 的 EventData 部分
Powershell - How to read EventData part of the XML
我正在尝试弄清楚如何在事件查看器中读取事件 ID 1085 - 详细信息 - 事件数据 - DCName
Link to the image
我可以读取 XML 的系统部分,但我不知道如何读取 EventData
到目前为止我有
$filter = @{
LogName = 'System'
ID=1085
}
[xml[]]$xml = Get-WinEvent -filterHashTable $filter -MaxEvents 10 -ComputerName SERVER | %{$_.ToXml()}
$events = $xml | Select-Xml '//x:Event' -Namespace @{ x = 'http://schemas.microsoft.com/win/2004/08/events/event' } | Select-Object -ExpandProperty Node
$events.System.Computer <# -- This works #>
$events.EventData.DCName <# -- This is not working #>
如有任何建议,我们将不胜感激。
谢谢
要获得 DCName
,您必须在 XML 中更深入地挖掘:
$result = Get-WinEvent -FilterHashtable @{LogName = 'System'; ID=1085} -MaxEvents 10 -ComputerName SERVER | ForEach-Object {
# convert the event to XML and grab the Event node
$eventXml = ([xml]$_.ToXml()).Event
# output a PsCustomObject to collect $result
[PsCustomObject]@{
Computer = $eventXml.System.Computer
DCName = ($eventXml.EventData.Data | Where-Object { $_.Name -eq 'DCNAME' }).'#text'
}
}
# output on screen
$result
$eventXml.EventData.Data
returns 一个节点数组,您对其 Name 属性中具有 DCName
的节点感兴趣,因此我们需要使用Where-Object
条款
我正在尝试弄清楚如何在事件查看器中读取事件 ID 1085 - 详细信息 - 事件数据 - DCName
Link to the image
我可以读取 XML 的系统部分,但我不知道如何读取 EventData
到目前为止我有
$filter = @{
LogName = 'System'
ID=1085
}
[xml[]]$xml = Get-WinEvent -filterHashTable $filter -MaxEvents 10 -ComputerName SERVER | %{$_.ToXml()}
$events = $xml | Select-Xml '//x:Event' -Namespace @{ x = 'http://schemas.microsoft.com/win/2004/08/events/event' } | Select-Object -ExpandProperty Node
$events.System.Computer <# -- This works #>
$events.EventData.DCName <# -- This is not working #>
如有任何建议,我们将不胜感激。
谢谢
要获得 DCName
,您必须在 XML 中更深入地挖掘:
$result = Get-WinEvent -FilterHashtable @{LogName = 'System'; ID=1085} -MaxEvents 10 -ComputerName SERVER | ForEach-Object {
# convert the event to XML and grab the Event node
$eventXml = ([xml]$_.ToXml()).Event
# output a PsCustomObject to collect $result
[PsCustomObject]@{
Computer = $eventXml.System.Computer
DCName = ($eventXml.EventData.Data | Where-Object { $_.Name -eq 'DCNAME' }).'#text'
}
}
# output on screen
$result
$eventXml.EventData.Data
returns 一个节点数组,您对其 Name 属性中具有 DCName
的节点感兴趣,因此我们需要使用Where-Object
条款