2016-04-27 2 views
1

Я провел последние несколько часов, пытаясь различными способами решить мою проблему ниже, добавив части из других рабочих сценариев, которые у меня есть, и исследую здесь, но дошел до того, что мне нужен свежий набор глаз, чтобы указать на очевидное для меня.Выход электронной почты Powershell не корректно отформатирован

Это мой сценарий, который выполняет следующие действия:

  • Lists все папки в определенном месте, помещает пути к папкам в текстовом файле
  • В цикле, использует текстовый файл для проверки самый последний файл в каждой папке, а затем выводить последние 10 временных меток (обозначаемые «[»)
  • Письма результаты

Все вышеперечисленные работы, у меня есть письмо с правильной информацией. Проблема заключается в том, что электронная почта поступает в одну строку без форматирования.

Я взял теги стиля из предыдущего рабочего сценария, который у меня был, поэтому я не уверен, где я ошибся. Есть идеи?

$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

Я думаю, что вы не должны передать строку в $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. Но я думаю, что это должно помочь.

+0

Спасибо, это дает прогресс, он создает отформатированное электронное письмо, однако созданный контент теперь некорректен. Я немного потрудился и посмотрю, что я могу придумать ... – PJC83

0

После многих пустяков и фанадотов я в конечном итоге переписал партию и получил то, что мне нужно, по электронной почте по-другому.

Я не уверен, что то, что мне нужно, может быть достигнуто из моего исходного кода (не прибегая к повторной записи).

Смежные вопросы