2016-05-27 11 views
0

皆さん、PowerShellの - メールアウト文字列

グーグルにもかかわらず、テキストと同じ形式を持っていない人々の多くは、この問題を抱えている私を示し、しかし、私は取得しています答えは私のために働くしていないようです。それか、私は理解しません。

状況:私はポーリングしてファイル数を与えるスクリプトを持っています。それは素晴らしい作品と私​​はそれをテキストファイルにパイプします

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

ファイルチェックは素晴らしいです。上記のループは6回(6つのディレクトリがあるので)行い、復帰します。

電子メールでは、すべてが混乱していました。私も、私は再び電子メールの罰金を得るが、

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

を見てきました

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

、そのまだすべて1行目:ここでは、誰かがアイブ氏はこれをやって、私は、外の文字列を使用する提案しましたキャリッジリターンはありません。

誰でもご存知ですか?私は近いので、私は知っている。

+2

結果をファイルに出力し、そのファイルを添付します。次に、ユーザーに詳細を参照するために添付ファイルを参照します。もっと欲しいものがあれば、それをHTMLに変換し、メールを送るときに '-BodyAsHTML'スイッチを使います。 – TheMadTechnician

答えて

0

[環境]改行を試すことができます。私はちょうどあなたがフォルダ内のファイル数の配列を持っていると想定例の便宜上

$DirectoriesFiles = 2,3,4,5 

$newline = [Environment]::NewLine 
$body = "List of number of files" + $newline 
Foreach ($numOfFiles in $DirectoriesFiles) { 
    $body += "You have $numOfFiles files in that folder" + $newline 
} 

$ol = New-Object -comObject Outlook.Application 
$Mail = $ol.CreateItem(0) 
$Mail.To = "someone" 
$Mail.Subject = "some test e-mail" 
$Mail.Body = $body 
$Mail.save() #or send 

が、私は思う:私は以下のコードと電子メールは良い見て、正しい改行とでテストここからあなたのコンテキストに適応する方法を理解することができます。あなたはあなたが4つのファイルを持っているフォルダ内の3つのファイル

を持ってそのフォルダ内の2つのファイル

を持つファイル

の数の

リスト:私の結果の電子メールはこのように見えましたそのフォルダ内の

あなたは、そのフォルダ内の5つのファイルを持っている

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 = "[email protected]" 


$msg.To.Add("[email protected]") 


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


$msg.Body = $body 


$SmtpClient.Send($msg) 
関連する問題