LoginSignup
2
5

More than 5 years have passed since last update.

batからPowerShell ログ内容をメールで出力 メモ

Last updated at Posted at 2018-05-21

batからPowerShell ログ内容をメールで出力 メモ

作業

・実行結果ログファイルを出力するにバッチ処理に追記
 ※ログ出力し終わった直後に下記コマンドを設置


powershell -ExecutionPolicy RemoteSigned -Command ~ (省略)

・powershellファイルを作成。

bat側処理

bat側で以下要素を指定し、PowerShellに渡す。

その後、メール結果を表示。

・PowerShell処理ファイル(絶対パス)
・FROM(差出人メールアドレス)
・TO(Toメールアドレス※複数の場合「;」で区切る)
・CC(Ccメールアドレス※複数の場合「;」で区切る)
・SUBJECT(件名)
・ログファイル配置先(絶対パス)


@echo off
SET MAIL_PS1="PowerShellファイル配置先パス"
SET from="差出人メールアドレス"
SET to="toメールアドレス"
SET cc="ccメールアドレス"
SET subject="件名"
SET logFile="ログファイル配置先パス"

rem powershell呼び出し
powershell -ExecutionPolicy RemoteSigned -Command %MAIL_PS1% %from% %to% %cc% %subject% %logFile%

rem メール配信確認
If %ERRORLEVEL% EQU 0 GOTO label_SEND_MAIL_OK
If %ERRORLEVEL% NEQ 0 GOTO label_SEND_MAIL_NG

:: =============送信OK
:label_SEND_MAIL_OK
     echo "メールが正常に送信されました"
     GOTO label_SEND_MAIL_END

:: =============送信NG
:label_SEND_MAIL_NG
     echo "メール送信時にエラーが生じ、異常終了しました"
     GOTO label_SEND_MAIL_END

:: =============処理終了
:label_SEND_MAIL_END

PowerShell側処理

bat側から受け取った値でメール作成、指定パスのログファイル内容を本文に書き出し送信する。


Param(
     [string]$from          #差出人
     [string[]]$to          #to(複数アドレス対応)
     [string[]]$cc          #cc(複数アドレス対応)
     [string]$subject       #件名
     [string]$logFile       #ログファイル配置先パス
)

$smtp = "SMTPサーバアドレス"
$port = "SMTPポート番号"
$SmtpClient = New-Object Net.Mail.SmtpClient($smtp,$port)
$Mail = New-Object Net.Mail.MailMessage

#差出人
$Mail.From = $from

#TO
$to | foreach { $Mail.To.Add($_) }

#CC
$cc | foreach { $Mail.Cc.Add($_) }

#件名
$Mail.Subject = $subject

#本文 ログファイル内容を書き出す
body = (Get-Content $logFile) -as [string[]]
$i = 0
foreach($l in $body){
    if($i -eq 0){
        $Mail.body = $l
    }else{
        $Mail.Body = $Mail.Body += "`r`n + $l 
    }
$i++
}
$SmtpClient.Send($Mail)
2
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
5