Как отформатировать строки относительно заголовков таблицы? - PullRequest
1 голос
/ 08 мая 2019

У меня есть следующий скрипт:

$ebody = "
<style>
table, th, td {
  border: 1px solid black;
  border-collapse: collapse;
}
</style>
<table style=`"width:100%`">
    <tr>
        <th></th>
        <th>Data Source</th>
        <th>dest Server</th>
        <th>Security Option</th>
        <th>Est Size</th>
        <th>Last Updated</th>
    </tr>
</table>
"
for ($i = 0; $i -lt 3; $i++)
{
    $ebody += "
    <style>
    table, th, td {
      border: 1px solid black;
      border-collapse: collapse;
    }
    </style>
    <table style=`"width:100%`">
        <tr>
            <td>$($i)</td>
            <td>$DSource</td>
            <td>$Server</td>
            <td>$Security</td>
            <td>$Size</td>
            <td>$Updated</td>
        </tr>
    </table>
    "
if ($i -gt 1)
{Send-MailMessage -To recipient@domain.com -from sender@domain.com -Subject "hi" -body $ebody -BAH -SmtpServer server@domain.com -Port 25 -Credential $cred -usessl}
}

я получаю это как вывод на электронную почту:

table

Я хотел бы получить такой вывод,

desired

в котором строки корректируются относительно заголовков ... или если есть способ настроить заголовки на строки, хотя я не думаю, что это возможно, если нет какого-либо ссылочного пути?

так в общем, как я могу получить хорошую сравнительно заполненную таблицу с моим требованием сценария, так как $ ebody добавляется к строкам?

РЕДАКТИРОВАТЬ: после применения $ ebody меняется от ответа Тео. первая строка итерации идеально выравнивается! но почему-то 2-я итерация не ...

edit

1 Ответ

1 голос
/ 08 мая 2019

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

Во-первых, вам не нужно добавлять <style> внутри цикла. Делать это один раз в начале тела достаточно.
Затем создайте таблицу, пока у вас есть данные, и, наконец, закройте эту таблицу.

Я использовал сплаттинг для всех параметров командлета Send-MailMessage, чтобы сделать код более читабельным.

$ebody = @'
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <style>
            table, th, td {
              border: 1px solid black;
              border-collapse: collapse;
            }
        </style>
    </head>
    <body>
    <table style="width:100%">
        <tr>
            <th></th>
            <th>Data Source</th>
            <th>dest Server</th>
            <th>Security Option</th>
            <th>Est Size</th>
            <th>Last Updated</th>
        </tr>

'@

for ($i = 0; $i -lt 3; $i++) {
    $ebody += @"
            <tr>
                <td>$i</td>
                <td>$DSource[$i]</td>
                <td>$Server[$i]</td>
                <td>$Security[$i]</td>
                <td>$Size[$i]</td>
                <td>$Updated[$i]</td>
            </tr>

"@
}

$ebody += @"
        </table>
    </body>
</html>
"@

if ($i -gt 1) {
    $params = @{
        'To'         = 'recipient@domain.com'
        'From'       = 'sender@domain.com'
        'Subject'    = 'hi'
        'Body'       = $ebody
        'BodyAsHtml' = $true
        'SmtpServer' = 'server.domain.com'
        'Port'       = 25
        'Credential' = $cred
        'UseSsl'     = $true
    }

    Send-MailMessage @params
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...