Powershell: отображать заголовки таблицы один раз вверху в HTML-отчете - PullRequest
1 голос
/ 13 апреля 2011

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

Вот мой сценарий:

$servers = @(gc config\dbs.txt)
foreach($server in $servers)
{
  $dt = new-object "System.Data.DataTable"
  $cn = new-object System.Data.SqlClient.SqlConnection "server=$server;database=msdb;Integrated Security=sspi"
  $cn.Open()
  $sql = $cn.CreateCommand()
  $sql.CommandText = $(get-content config\query.sql)
  $rdr = $sql.ExecuteReader()
  $dt.Load($rdr)
  $cn.Close()
  $dt |ft Server,RunStatus,JobName >> $log
  $dt | ConvertTo-Html Server,JobName,RunStatus -head $a | ac logs\backups\report.htm    
}

Server      JobName     RunStatus
srv1        job1        success
srv1        job2        success
Server      JobName     RunStatus
srv2        job1        fail
srv2        job2        success
srv2        job3        success
Server      JobName     RunStatus
srv3        job1        fail
srv3        job2        success
srv3        job3        success
Server      JobName     RunStatus
srv4        job1        fail
srv4        job2        success
srv4        job3        success
Server      JobName     RunStatus
srv5        job1        fail

Я получаю имена заголовков несколько разтак как содержимое файла html добавляется после каждого перечисления foreach.Могу ли я изменить свой сценарий так, чтобы заголовок [Server JobName RunStatus] отображался только один раз в верхней части?

Также я хочу знать, возможно ли отобразить report.htm как встроенный контент в почтечем вложение.Возможно ли это?

Заранее спасибо.
steeluser

1 Ответ

5 голосов
/ 13 апреля 2011

Заголовки таблиц отображаются для каждого перечисления, потому что вы используете ConvertTo-HTML в каждом перечислении :).То же относится и к format-table.Попробуйте это:

$dts = @()

@(gc config\dbs.txt) | % {
  $dt = new-object "System.Data.DataTable"
  $cn = new-object System.Data.SqlClient.SqlConnection "server=$server;database=msdb;Integrated Security=sspi"
  $cn.Open()
  $sql = $cn.CreateCommand()
  $sql.CommandText = $(get-content config\query.sql)
  $rdr = $sql.ExecuteReader()
  $dt.Load($rdr)
  $cn.Close()
  $dts += $dt
}

$dts |ft Server,RunStatus,JobName >> $log
$dts | ConvertTo-Html Server,JobName,RunStatus -head $a | ac logs\backups\report.htm    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...