Powershell 发送电子邮件消息,如何在正文变量中放置换行符

Powershell 发送电子邮件消息,如何在正文变量中放置换行符

我正在文件夹中的多个文件中搜索一个字符串。如果我找到该字符串,那么我想通过电子邮件发送所有包含该字符串的文件夹。我已经弄清楚了这一切,并调整了我想要的格式。

问题是当我发送电子邮件时,内容全部显示在一行中。我希望此文本逐字分解。以下是代码:

$find = Get-Childitem –Path C:\inetpub\wwwroot\*\Web.config | Select-String -Pattern "abc..config" 
$boards = $find.Path | Out-String 

[array]$split = $boards.Split("\") 
$count = $split.Count

$out = for ($i=0; $i -le $count; $i++) {
    $split[$i+3]
    $i = $i + 3
    }

$out2 = $out | Out-String

Send-mailmessage -from "" -to "" -subject "Test" -body $out2 -BodyAsHtml -priority  High -dno onFailure -smtpServer 

问题是正文显示如下:ABC ABC2

但是,我希望身体是这样的:

ABC
ABC2 

我也尝试将输出发送到文本文件并使用 -Raw 和 gci:

$find = Get-Childitem –Path C:\inetpub\wwwroot\*\Web.config | Select-String -Pattern "abc..config" 
$boards = $find.Path | Out-String 

[array]$split = $boards.Split("\") 
$count = $split.Count

$out = for ($i=0; $i -le $count; $i++) {
    $split[$i+3]
    $i = $i + 3
    }

$out | Out-file -FilePath C:\Test.txt 
$body = Get-content C:\Test.txt -Raw 


Send-mailmessage -from "" -to "" -subject "Test" -body $body -BodyAsHtml -priority  High -dno onFailure -smtpServer 

我确实在 gci 中使用了 Out-String 和 -Raw,而且我使用的是 V4。不知道我遗漏了什么。当我输出文件时,它是正确的格式,带有换行符,但当我发送电子邮件时却不是。我宁愿不创建文本文档,而只是在正文中使用变量。

谢谢

答案1

邮件正文的内容不是 HTML,但您使用的-bodyAsHtml是 send-mailmessage。您的正文只是文本,当您指定-bodyAsHTML它时会导致换行符被删除。删除-bodyAsHtml应该可以解决您的问题。

在 HTML 文档中,换行符用<P>、表示<BR>,并且仅当它们出现在 内部时才会保留<PRE>

相关内容