【发布时间】:2016-05-24 19:40:45
【问题描述】:
我提前为此道歉,因为我在整个网络上看到很多关于它的问题,但由于某种原因我仍然遇到问题。
我有一个脚本,它创建一个数组,其中动态添加了信息。脚本完成后,我需要它通过电子邮件将该信息发送给我。问题是每一行都结合到我得到 1 行。例如:
$Body = @()
$Body += "1"
$Body += "2"
$Body += "3"
$Body += "4"
这是我的发送命令:
Send-MailMessage -To $Recipients -From $Sender -Smtp $SMTP $Subject "Test" -Body ($Body | Out-String)
我在邮件正文中得到的是:1234
我试过这个 for 循环将 `n 附加到每行的开头(第一行除外),如下所示:
for ($i = 0; $i -lt Body.Count; $i++){
if($i -eq 0){
Write-Host $i
}else{
$Body[$i] = "`n" + $Body[$i]
Write-Host $Body[$i]
}
}
结果更好,但我得到了额外的一行:
1
2
3
4
最终我只想要这个:
1
2
3
4
过去,我通过创建这样的变量获得了我想要的格式:
$Body = @"
This is the email I want to send. It formats great if:
1) I want to make all the content static.
Is it possible to create the `$Body variable like this but add line by line dynamically and maintain a serpate line. (without extra lines)?
"@
我错过了什么?它必须是简单的...感谢您的帮助!
【问题讨论】:
-
或许
-Body ($body -join "`r`n")? -
实际上,我怀疑这是您的电子邮件链中的“有用”组合换行符的内容。 Outlook 默认执行此操作,并且仅在没有缩进且行之间只有一个换行符时才会执行此操作。您的最后一个示例不会触发它,但您的“我只想要这个”示例会。
-
-Body ($body -join "
rn") 如果我设置一个演示并在 Powershell 窗口中运行它,但在脚本的上下文中,我可以将所有内容放在一行中。复制和粘贴只是为了确定……我会继续调查这个和 Ryan 的评论。