结尾带有星号和数字的Powershell smtp电子邮件

结尾带有星号和数字的Powershell smtp电子邮件,powershell,Powershell,当我使用powershell发送电子邮件时,在电子邮件的末尾有一个1列、2行的表格,在col0第0行中有一个星号,在col0第1行中有一个数字: 我知道这很可能是“运行此脚本所需的时间”,但我的最终用户不希望它出现在那里。有没有办法把它去掉 我所做的是遍历一个列表,获取所有不符合的项,然后将它们放入相关区域下的表中。因此,正文基本上是由7个表组成的列表,发送方式如下: $smtpServer = "smtpserver.us" $msg = new-object Net.Mail.MailMe

当我使用powershell发送电子邮件时,在电子邮件的末尾有一个1列、2行的表格,在col0第0行中有一个星号,在col0第1行中有一个数字:

我知道这很可能是“运行此脚本所需的时间”,但我的最终用户不希望它出现在那里。有没有办法把它去掉

我所做的是遍历一个列表,获取所有不符合的项,然后将它们放入相关区域下的表中。因此,正文基本上是由7个表组成的列表,发送方式如下:

$smtpServer = "smtpserver.us"
$msg = new-object Net.Mail.MailMessage
$smtp = New-Object Net.Mail.SmtpClient($smtpServer)

$msg.From="productionmachine@email.com"

$msg.To.Add("user@email.com")
$msg.Subject = "Non Compliant Items"
$msg.Body = $body | ConvertTo-Html -Body $body -Head $style
$msg.IsBodyHtml = $true
$smtp.Send($msg)

您似乎在脚本前面用实际结果覆盖了
$body

然后将
$body
管道传输到
ConvertTo Html
时,它将绑定到
InputObject
参数,并转换为一个具有单个列的表,表示字符串的唯一属性:它的长度(在您的示例中为150K个字符)

但是您没有注意到,因为
$body
已经用
-body$body
附加到html正文中

删除
$body |
,它就会工作。或者更好的是,将
$body
与实际结果分开


如果您真的不需要
转换为Html
(它的主要功能是将live.NET对象集合转换为Html表),只需自己构造主体

这里的字符串(多行字符串)和字符串格式运算符(
-f
)非常适合用于此目的:

$htmlTemplate = @'
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    {0}
  </head>
  <body>
    {1}
  </body>
</html>
'@

$msg.Body = $htmlTemplate -f $style,$body
$htmlTemplate=@'
{0}
{1}
'@
$msg.Body=$htmlTemplate-f$style,$Body

是的,请给我一分钟时间把代码放进去。什么是
$body
?你能告诉我们它是如何填充/分配的吗?它本质上是一个表标签列表,如客户支持

工作指令所有者执行者由Man修改的我真的需要弄清楚如何格式化内容。谢谢,这有效地删除了*和长度,但是现在只有一个空白的边框,这是因为你实际上没有向
转换为Html
提供任何输入,所以你最终得到的是一个空表除了不使用转换为Html之外,没有其他方法可以删除它吗?我不这么认为,但是如果你没有真正使用它,为什么不自己构建整个html文档呢?有没有更好的方法来实现我的目标?很抱歉,我对powershell非常陌生,所以我只是想摆脱在以前的sharepoint/powershell脚本中看到的东西。作为参考,我正在遍历一个列表,并试图添加一个指向工作说明的链接,以及流程所有者和最后修改者的姓名。我只是想把它全部放在一个字符串中,使它成为一个html类型,这样就可以了。