民间,
谷歌搜索显示我有很多人有这个问题,但是我得到的答案对我来说似乎不起作用。要不然,或者我不明白。情况:我有一个轮询并提供文件计数的脚本。它工作得很好,我把它管道到一个文本文件
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
我收到的电子邮件很好,但同样,它仍然是一行,没有回车。
任何人都有任何想法?我知道我非常接近。
答案 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)