我提前为此道歉,因为我在整个网络上看到了很多关于它的问题,但出于某些原因,我仍然遇到问题。
我有一个脚本可以创建一个动态添加信息的数组。当脚本完成时,我需要它将该信息通过电子邮件发送给我。问题是每一行合并到我得到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)?
"@
我错过了什么?它有点简单...感谢您的帮助!
答案 0 :(得分:0)
WOW所以这是一件很挑剔的事情......我发现使用它可以让一切看起来都正确(正如Ryan所建议的那样):
-Body ($Body -Join "`r`n")
但是在我的实际脚本的上下文中它没有用。好吧,看起来这一切都与日期的方式有关。这是减少显示:
不工作
$Body = @()
$Body += "Beginning processing on: " + (Get-Date)
$Body += "No advertisements found, exiting"
也不起作用
$Body = @()
$DateTime = Get-Date
$Body += "Beginning processing on: $DateTime"
$Body += "No advertisements found, exiting"
当我删除任何与日期有关的内容时,格式化是正确的。最终它只是采取了一个简单的“。”使它正常工作。
工作 - 请注意第3行
$Body = @()
$DateTime = Get-Date
$Body += "Beginning processing on: $DateTime." #Note the period at the end of the line.
$Body += "No advertisements found, exiting"
据推测,我可以连接并且它可以工作但是哦,我保持原样。我不认为一段时间会那么挑剔,但现在我知道了。