2012-01-18 17 views
4

簡単に言えば、ディレクトリの内容をリストするPowershellスクリプトから電子メールを送信しようとしています。Powershell:電子メールのGet-Childitemをフォーマットする方法は?

これを行うには、テキストを変数に格納してから、この変数をSend-MailMessageに挿入します。

私の問題はこれです。 I Out-Stringにパイプオブジェクトを次のように改行を挿入しない場合:Get-Childitemは、プロンプトで入力されたときに明らかに、出力がうまく改行でフォーマットされ

$mailbody += "<p>" + (get-childitem $path | select-object Name | Out-String -width 40) + "</P>" 

変数に格納されている場合、しかし、その後、電子メールで送信します(HTML形式の電子メールで)、改行がないため、読みにくい長い文字列のファイル名になります。

どうすればよいですか?

+0

それは改行がありますが、表示されていないことだろうか? HTMLでは、改行は空白として扱われます。 – theglauber

+0

私はこれが理由だと思っていましたが、 '-BodyAsHtml'スイッチを削除して、電子メールがplantextで送信されたことを確認しましたが、空白だけの改行はありませんでした。 – hazymat

+0

Outlookをメールクライアントとして使用していますか?その場合、「余分な改行をプレーンテキストメッセージから削除する」設定をオフにしない限り、Outlookによって改行が削除されている可能性があります。 – theglauber

答えて

6

これを行うには、ConvertTo-Htmlコマンドレットを使用することができます。

get-childitem $path | select-object Name | ConvertTo-Html -fragment 

これは、HTML形式の電子メールで送信することができますあなたのための素敵なテーブルを作成します。 -fragment部分は頭や体などを取り除き、テーブルのみを与えます。

+0

ねえ、それはあなたがどうやって知っているときに超簡単です。感謝万円! – hazymat

2

ConvertTo-Htmlコマンドレットの使用はどうですか?あなたの環境情報を記入してください。

$path = "C:\" 
[string] $html = dir $path | ConvertTo-Html 

$smptServer = '' 
$to = '' 
$from = '' 
$subject = 'Test' 
Send-MailMessage -To $to -From $from -Body $html -BodyAsHtml -SmtpServer $smptServer -Subject $subject 

EDIT - これは動作しますが、メールはがらくたのように見えます。あなたはそれが正確にあなたがPowerShellウィンドウの使用でこれをdirを行うときにそれがないように見えるようにしたい場合:

[string] $html = dir $path | Select Mode, LastWriteTime, Length, Name | ConvertTo-Html 
+0

ありがとう - これは私が探していたものです。 – hazymat

関連する問題