如何格式化相对于表格标题的行?

时间:2019-05-08 06:21:20

标签: html powershell

我的脚本如下:

$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之后,Theo的答案会发生变化。第一迭代行完全对齐!但是以某种方式第二次迭代不会...

edit

1 个答案:

答案 0 :(得分:1)

不确定从何处获取数据,但就目前而言,在下面的示例中,我只是假设代码中给定的变量是数组。 如果不是这种情况,请告诉我,以便我们可以在循环内进行调整。

首先,您不必在循环内添加<style>。刚开始做一次就足够了。
接下来,只要有数据,就在表上构建数据,最后关闭该表。

我对Send-MailMessage cmdlet中的所有参数使用了拼写,以使代码更具可读性。

$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
}