我花了最后几个小时尝试各种方法来解决我的问题,从我在其他工作脚本中添加部件并在这里进行研究,但是我已经达到了需要一双新眼睛来指出明显的对我说。
这是我的脚本,它执行以下操作:
以上所有作品,我都收到了包含正确信息的电子邮件。问题是电子邮件全部在同一行上,没有格式化。
我从之前的工作脚本中获取了我的样式标签,所以我不确定我哪里出错了。有什么想法吗?
$style = "<style>BODY{font-family: Arial; font-size: 10pt;}"
$style = $style + "TABLE{border: 1px solid black; border-collapse:collapse;}"
$style = $style + "TH{border: 1px solid black; background: #dddddd; padding: 5px; }"
$style = $style + "TD{border: 1px solid black; padding: 5px; }"
$style = $style + "</style>"
$subject = "Processing Log Check at " + (Get-Date -Format g)
$logpaths = Get-Content -Path C:\Powershell\xxxx\scenariologlocation.txt
$output = foreach ($logpath in $logpaths)
{
Write-Output $logpath
Get-ChildItem -path $logpath | sort LastWriteTime | select -ExpandProperty FullName -last 1 | Out-File C:\Powershell\path.txt
$path = Get-Content -Path C:\Powershell\path.txt
Get-Content -Path $path | Select-String -SimpleMatch "[" | select Line -last 10 | format-table -HideTableHeaders | Out-String
}
$body = (ConvertTo-Html -Head $style -body $output | Out-String)
Send-MailMessage -From "xxxxxx" -To "xxxxxx" -Subject $subject -Body $body -BodyAsHtml -SmtpServer "xxxxxxx"
答案 0 :(得分:0)
我认为您不应该将字符串传递给$output
,然后将其传递给Convertto-Html -body
在我看来,脚本的最后一部分看起来应该是
$output = foreach ($logpath in $logpaths)
{
Write-Output $logpath
Get-ChildItem -path $logpath | sort LastWriteTime | select -ExpandProperty FullName -last 1 | Out-File C:\Powershell\path.txt
$path = Get-Content -Path C:\Powershell\path.txt
Get-Content -Path $path | Select-String -SimpleMatch "[" | select Line -last 10
}
$body = ($output | ConvertTo-Html -Head $style) | Out-String
Send-MailMessage -From "xxxxxx" -To "xxxxxx" -Subject $subject -Body $body -BodyAsHtml -SmtpServer "xxxxxxx"
这样Convertto-Html
可以在$output
中的所有对象上构建表。我真的不知道是否有必要将HTML传递给Out-String
。这里没有Powershell。但我认为这应该有所帮助。
答案 1 :(得分:0)
经过大量的摆弄和粉丝运动之后,我最终重新编写了这本书,并以另一种方式将我需要的内容收录到电子邮件中。
我不是100%确信我需要从原始代码中获得什么(不需要重写)。