2017-08-29 5 views
-1

タスクスケジューラで週に1回実行するタスクを2つのファイルをコピーして電子メールに添付して電子メールで送信する方法を理解しようとしています。人々のグループ。これは可能ですか? Power Shellを使用して実行するスクリプトを作成するには、特定の場所から2つのファイルを取得して電子メールを送信しますか?それは私が以下にあるものに似ているのか、間違った方向に行くのでしょうか?Powershell Powershell 2つのファイルを集めてグループにメールする

$ol = New-Object -comObject Outlook.Application 
$message = $ol.CreateItem(0) 
$message.Recipients.Add("Deployment") 
$message.Subject = "Website deployment" 
$message.Body = "See attached file" 

$file = "K:\Deploy-log.csv, K:\Deploy-log2.csv" 
$message.Attachments.Add($file) 

エラー

例外 "1" 引数(複数可)で "追加" を呼び出す: "ファイル名やディレクトリ 名が有効ではありません" Cで:\ Users \ユーザーdavidb \デスクトップ\ email.ps1:8文字:1 + $ message.Attachments.Add($ファイル)

  • FullyQualifiedErrorId:ComMethodTargetInvocation

私が取る場合, K:\Deploy-log2.csvオフになってもエラーは発生しませんが、メールはまだ届いていません

+2

を使用することができます。公式のM $ docから始めてください:https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/send-mailmessage?view=powershell-5.1 – Manu

+0

例を含む上記のリンクを読んでくださいメールにファイルを添付する方法を示します。 – Manu

+0

Manu Pのリンクから 'Send-MailMessage'コマンドレットについて:_'-Attachments' 電子メールメッセージに添付するファイルのパスとファイル名を指定します。このパラメータを使用するか、パスとファイル名をSend-MailMessageにパイプすることができます._ – BenH

答えて

1

コードでは、$fileは1つの文字列であり、1つの文字列として解釈される場合は無効です。あなたが意図しているのは文字列です。配列の各要素は1つのパスを持つ文字列です。 foreachまたはループのいずれかを使用して配列をループすることができます。それぞれのパスにAdd()を一度使用します。次のようになります。

$ol = New-Object -comObject Outlook.Application 
$message = $ol.CreateItem(0) 
$message.Recipients.Add("Deployment") 
$message.Subject = "Website deployment" 
$message.Body = "See attached file" 

$files = "K:\Deploy-log.csv","K:\Deploy-log2.csv" 
foreach ($file in $files) { 
    $message.Attachments.Add($file) 
} 
$message.Send() 

代わりに、PowerShellを使用した電子メールの添付と送信に関する多くの多くの多くのチュートリアルがありますSend-MailMessageレット

Send-MailMessage -From 'Sender <[email protected]>' -To "Recipient <[email protected]>" -Subject "Website deployment" -Body "See attached file" -Attachments @("K:\Deploy-log.csv", "K:\Deploy-log2.csv") -SmtpServer smtp.example.com 
+0

それはどのように働いて2番目のものを送るのですか?ちょうど将来の参照のために好奇心があった –

+0

@DavidBriertonいいえ、あなたは "送信"を終了する必要はありません。あなたは2番目のものを送るのはどういう意味ですか? 'Send-MailMessage'でメッセージを送る別の方法は?それがうまく動作しなかった理由がSMTPサーバーの周りを回る可能性があります。あなたのSMTPサーバーは認証されていない送信を許可しないので、資格( '-Credentials')が必要ですか? – BenH

+0

おそらくそれが何であるか –

関連する問題