在PowerShell

问题描述 投票:0回答:5

最终,我通过电子邮件发送内容。

$From = "[email protected]" $To = "[email protected] $subject = "Invalid language files" Send-MailMessage -SmtpServer "smtp.domain.com" -From $From -To $To -Subject $subject -Body $body
当我收到消息时,该行有预期的双重空间,但是$ invalid_hosts的内容都在一行。我也尝试做

The following files in <filepath> were found to be invalid and renamed

$body = $invalid_hosts -join "`n"

无法正常工作。我需要做什么才能完成这项工作?
	

管将数组置于

$body = [string]::join("`n", $invalid_hosts)
cmdlet,将它们从字符串对象集合转换为单个字符串:

Out-String

powershell join
5个回答
36
投票

足够只需管道即

PS> $body = $invalid_hosts -join "`r`n" | Out-String

我不确定如何回答其他所有内容,但是对于PowerShell保证的新线,请使用:
[环境] :: newline代替您的“ n”

20
投票
今天解决这个问题;以为我会分享我的答案,因为问题和其他答案帮助我找到了解决方案。 而不是

$result = 'This', 'Is', 'a', 'cat' $strResult = $result | Out-String Write-Host $strResult This Is a cat

使用
$body = $invalid_hosts -join "`r`n"
$body = "The following files in $Path were found to be invalid and renamed `n`n" + $body

8
投票
我对此进行了不同的态度,只是替换了Newline

$MessageStr = "The following files in " + $Path + " were found to be invalid and renamed" $BodyArray = $MessageStr + $Invalid_hosts $Body = $BodyArray -join "`r`n"

7
投票

我当然不是PowerShell的专家,但是我发现了一种更简单的方法。 只需将管道带到这样的管道:

$result -replace("`r`n"," ")

这与OP问题略有不同。 它不会与Newlines一起加入数组,但是在编写输出时确实会提供新线。

很久以前就问这个问题,但是我的搜索在这里指出了我的指向,因此我分享了我的其他人进行相同搜索的解决方案。
如上所述,[环境] :: newline是在PowerShell中创建线路断路的唯一可靠方法。您可以使用数组进行-join([环境] :: newline),这避免了弦乐创建的字符串末端的额外行。
    

3
投票

© www.soinside.com 2019 - 2025. All rights reserved.