更新时间:2022-06-24 10:10:00
XML 文件必须具有单个根(或 documentElement
)节点.由于您的日志文件似乎包含多个 <event>
标记而没有公共根元素,您可以像这样添加缺少的 documentElement
:
XML files must have a single root (or documentElement
) node. Since your log file seems to contain multiple <event>
tags without a common root element you can add the missing documentElement
like this:
$logpath = Join-Path $env:ProgramData 'Symantec\Symantec Agent\logs\Agent.log'
[xml]$log = "<logroot>$(Get-Content $logpath)</logroot>"
之后,您可以使用通常的方法处理您的日志,例如:
After that you can process your log with the usual methods, e.g.:
$fmt = 'MMM dd HH:mm:ss'
$log.SelectNodes('//event') |
select @{n='date';e={[DateTime]::ParseExact($_.date, $fmt, $null)}},
severity, hostname, @{n='message';e={$_.'#cdata-section'}}
如果您更喜欢自定义对象,您可以像这样轻松创建它们:
If you prefer custom objects you can easily create them like this:
$fmt = 'MMM dd HH:mm:ss'
$log.SelectNodes('//event') | % {
New-Object -Type PSObject -Property @{
'Date' = [DateTime]::ParseExact($_.date, $fmt, $null)
'Severity' = $_.severity
'Hostname' = $_.hostname
'Message' = $_.'#cdata-section'
}
}