下面的代码旨在将系统日志中的事件日志警告/错误添加到现有的HTML表结构中。然而,我似乎无法让它发挥作用。
$eventLogArray = @()
$eventLogs = Get-EventLog -ComputerName $env:COMPUTERNAME -LogName System -EntryType Error,Warning -Newest 50
ForEach ($log in $eventLogs) {
$item = New-Object -Type PSObject -Property @{
TimeGenerated = $log.TimeGenerated
Entry = $log.EntryType
ID = $log.EventID
Source = $log.Source
Message = $log.Message
}
$eventLogArray += $item
}
ForEach($event in $eventLogArray) {
$body += @"
<tr bgcolor="#EEEEEE">
<td>$event</td>
</tr>
"@每个$event包含来自数组$eventLogArray的正确条目,但是当它执行$body +=失败但没有任何错误时,我的表只是不包含事件日志条目。有什么想法吗?
发布于 2013-11-16 14:34:57
如果您希望$eventLogArray作为一个HTML:
($eventLogArray | ConvertTo-HTML -Fragment) -match '^<tr>'发布于 2013-11-16 15:27:13
我很难理解你想做什么。$event是一个psobject,所以当它被直接引用到here-string(而不是对象的一个属性)时,结果正文如下所示:
<tr bgcolor="#EEEEEE">
<td>@{TimeGenerated=10/24/2013 22:52:19; Entry=Error; ID=36887; Source=Schannel; Message=A fatal alert was received from the remote endpoin
t. The TLS protocol defined fatal alert code is 40.}</td>
</tr>这是你想要的吗?
您还可以使用管道简化和加快代码,并将第一个foreach循环替换为select-object。上面的输出是使用下面的代码生成的,所以它正在工作。
Get-EventLog -ComputerName $env:COMPUTERNAME -LogName System -EntryType Error,Warning -Newest 50 |
Select-Object TimeGenerated, @{name="Entry";expression={$_.EntryType}}, @{name="ID";expression={$_.EventID}}, Source, Message |
ForEach-Object {
$body += @"
<tr bgcolor="#EEEEEE">
<td>$_</td>
</tr>
"@
}https://stackoverflow.com/questions/20019479
复制相似问题