1

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

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

mail file blah blah blah

hshshshshs

当您对该文件进行分类时,它看起来还可以;主要问题是,当您将“cat”视为变量时,例如

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

它返回为

blah is mail file blah blah blah  hshshshshs

因此,当它作为正文的一部分传递给发送邮件消息时:

$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

那么我如何去“维护”文件原样,传递到邮件正文而不是作为附件?理想情况下,如何在该正文中获得前导空白行。

4

1 回答 1

3

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

$BLAH = cat ${MAIL_FILE} -Raw

否则,您可能会使用join运算符:

$BLAH = (cat ${MAIL_FILE}) -join "`r`n"
于 2013-09-20T21:39:22.623 回答