Powershell - 尽管Out-string

时间:2016-05-27 18:07:58

标签: email powershell formatting

民间,

谷歌搜索显示我有很多人有这个问题,但是我得到的答案对我来说似乎不起作用。要不然,或者我不明白。

情况:我有一个轮询并提供文件计数的脚本。它工作得很好,我把它管道到一个文本文件

Foreach ($Directory in $Directories) {
    Write-Output "You have $Results files in that folder" | Out-File "C:\Filecheck.txt" -Append
}

Filecheck看起来很棒。它执行上述循环6次(因为我有6个目录)并且它执行回车。

在电子邮件中,这一切都混乱了。在这里,有人建议我使用out-string,所以我这样做了:

$body = GC "C:\Filecheck.txt" | Out-string

我也见过

$body = GC "C:\Filecheck.txt" -Raw

我收到的电子邮件很好,但同样,它仍然是一行,没有回车。

任何人都有任何想法?我知道我非常接近。

2 个答案:

答案 0 :(得分:0)

您可以尝试使用[环境]换行符。我使用下面的代码进行了测试,电子邮件看起来很好并且有正确的换行符:

LEFT JOIN #TEMP1 T1 ON T2.STATICNAME LIKE T1.STATISTICNAME + '%'

为了示例,我假设您有一个包含文件夹中文件数量的数组,但我认为您可以从这里了解如何适应您的上下文。我生成的电子邮件看起来像这样:

  

文件数量列表

     

该文件夹中有2个文件

     

该文件夹中有3个文件

     

该文件夹中有4个文件

     

该文件夹中有5个文件

答案 1 :(得分:0)

感谢您的帮助。我的公司电子邮件不喜欢这种格式,但是我用html格式(使用
)并使用了IsBodyHTML标签,它就像一个魅力!

Del "D:\Filecheck.txt"

$Directories = GC "D:\Directory.txt"

Foreach ($Directory in $Directories) {

$Results = (Get-ChildItem $Directory).count

If ($Results -gt 0) {

Write-Output "...You have $Results files stuck in $Directory...<br><br> " | Out-File "D:\Filecheck.txt" -Append

} else {

Write-Output "Phew! We're good, <br><br>" | Out-File "D:\Filecheck.txt" -Append

}

$Results = $null

}



    $body = GC "D:\Filecheck.txt" 


Add-PSSnapin Microsoft.Exchange.Management.Powershell.Admin -erroraction silentlyContinue

$SmtpClient = new-object system.net.mail.smtpClient
    $SmtpServer = "localhost"
    $SmtpClient.host = "relay.me.local"


$msg = new-object Net.Mail.MailMessage

$msg.IsBodyHTML = $true


$smtp = new-object Net.Mail.SmtpClient($smtpServer)


$msg.From = "TelluRyesFileCheck@me.you"


$msg.To.Add("me@you.org")


$msg.Subject = "Checking if files exist on 9901/2"


$msg.Body = $body 


$SmtpClient.Send($msg)