带有空行的PowerShell“cat <file>”将空格视为空格</file>

时间:2013-09-20 21:11:35

标签: powershell sendmail

我已经看过很多帖子,询问如何从powershell中的文件中删除空行,但我试图保留它们,而不是在send-mailmessage调用中使用bodyashtml。

我有一个文件mail.txt,它是:

mail file blah blah blah

hshshshshs

当你捕获该文件时,它看起来不错;主要问题是,当你将“猫”视为变量时,比如

$BLAH = $(cat ${MAIL_FILE})
echo "blah is $BLAH"

它返回

blah is mail file blah blah blah  hshshshshs

所以当它作为body的一部分传递给send-mailmessage:

$BODY = @"

this is line two

$(cat ${MAIL_FILE})
"@

send-mailmessage `
  -from ${FROM} `
  -to ${MAIL_RECIPIENT} `
  -subject ${SUBJECT} `
  -body ${BODY} `
  -smtpserver ${RELAYHOST} `
  -priority ${PRIORITY}

它在电子邮件中显示为

line two

mail file blah blah blah  hshshshshs

而不是

<blank line here>
line two

mail file blah blah blah

hshshshshshhs

那么如何按原样“维护”文件,传递给邮件正文而不是作为附件?理想情况下,如何在该机构中获得领先的空白。

1 个答案:

答案 0 :(得分:3)

Get-Content(别名cat)实际上将内容读取为字符串数组,每个字符串代表一行。在powershell 3.0中,您可以使用-Raw标志来获取整个文件。

$BLAH = cat ${MAIL_FILE} -Raw

否则您可以使用join运算符:

$BLAH = (cat ${MAIL_FILE}) -join "`r`n"