首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用PSObject

使用PSObject
EN

Stack Overflow用户
提问于 2013-11-16 14:18:10
回答 2查看 562关注 0票数 0

下面的代码旨在将系统日志中的事件日志警告/错误添加到现有的HTML表结构中。然而,我似乎无法让它发挥作用。

代码语言:javascript
复制
$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 +=失败但没有任何错误时,我的表只是不包含事件日志条目。有什么想法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-11-16 14:34:57

如果您希望$eventLogArray作为一个HTML:

代码语言:javascript
复制
($eventLogArray | ConvertTo-HTML -Fragment) -match '^<tr>'
票数 2
EN

Stack Overflow用户

发布于 2013-11-16 15:27:13

我很难理解你想做什么。$event是一个psobject,所以当它被直接引用到here-string(而不是对象的一个属性)时,结果正文如下所示:

代码语言:javascript
复制
<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。上面的输出是使用下面的代码生成的,所以它正在工作。

代码语言:javascript
复制
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>       
"@
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20019479

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档