尝试将事件日志中的数据导入电子邮件中的html

时间:2016-04-01 22:50:36

标签: powershell

我正在尝试将事件日志条目转换为html我已经取得了成功,其他cmdlet一直在争取这么长时间。 这就是我在做的事情:

Get-EventLog -logName EDEN.AppServer -AFTER $lastCheck.Date | Where-Object {$_.EntryType -eq 'Error'}

在控制台中输出看起来像我想要的 Object.toString()

但是一旦我将它分配给变量并坚持使用html,我就会得到这个。

$html = @"
<!doctype html>

<html lang="en">
<head>
</head>
<body>
<img src = "cid:logo.jpg"/>
  <div>
  <P></P>
  <h>Eden Application Server Information</h>
  <p>Computer Name: $($EasHostInfo.Name)</p>
  <p>EAS Version: $($easVersion.Version) </p>
  <p>Eden Version: $($EasEdenVersion.LastVersion)</p>
  <p>EAS Error Log: There was$($EasLog)</p>
</div>
</body>
</html>
"@

consoleOut

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

您没有向我们展示关于您如何制作$EasEdenVersion的中间步骤,但在这种情况下并不特别重要。您正试图将复杂对象压缩为单个<p>。如果我不得不猜测你将所有name个返回的记录放入一个段落中。

你有对象,但你需要创建结构化的html才能正确显示它。 ConvertTo-HTML在某种程度上应该可以在这里提供帮助。虽然它可以创建整个文件并支持CSS,但您已经拥有了文件的开头,所以让我们看看我们是否可以使用它。

$html = @"
<!doctype html>

<html lang="en">
<head>
</head>
<body>
<img src = "cid:logo.jpg"/>
  <div>
  <P></P>
  <h>Eden Application Server Information</h>
  {0}
</div>
</body>
</html>
"@

$table = Get-EventLog -logName Application -AFTER (Get-Date).AddDays(-6) | 
    Where-Object {$_.EntryType -eq 'Error'} | 
    ConvertTo-Html -Fragment | Out-String

$html -f $table

主要是为了证明我已使用占位符$html为HTML表格编辑了{0}的概念。该表来自Get-EventLog的输出,它使用-Fragment转换为HTML表并保存为一个完整的字符串。然后使用format运算符将该字符串插入$html

Sample Output

您会注意到我没有选择任何特定属性,并且并非所有属性都保存为可读字符串。您需要使用Select-Object来获取所需的属性,例如nameversionlastversion