我的脚本如下:
$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}
}
我将其作为输出发送到电子邮件:
我想获得这种输出,
其中行相对于标头进行调整...或者是否有一种方法可以针对行对标头进行调整,尽管我认为除非有某种引用方式,否则不行吗?
所以基本上我可以用我的脚本要求将$ ebody追加到行中来实现一个相对较好的填充表吗?
编辑:应用$ ebody之后,Theo的答案会发生变化。第一迭代行完全对齐!但是以某种方式第二次迭代不会...
答案 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
}