PowerShellを使うと良い所は、電子メールを簡単に送付できるSend-MailMessage
と言う命令があるところである。
これを使って、外部コマンドの標準出力を電子メールとして送るとすると、以下のようになる。
## 管理者権限のPowerShellコンソールで、Set-ExecutionPolicy remotesignedを実行しておく必要がある。
## 使い方:
## powershell -NoProfile -ExecutionPolicy Unrestricted .\send-notification-email.ps1
# 送信する電子メールの本文はUTF-8にする。
$utf8 = ([System.Text.Encoding]::UTF8)
# 差出人
$fromaddress = "fromuser@example.com"
# 宛先として2つの電子メールアドレスを設定する。
$toaddress1 = "touser1@example.jp"
$toaddress2 = "touser2@example.jp"
# 電子メールのSubject
$subject = "件名です"
# 本文は外部コマンドの標準入力から受け取る
$body = C:\jruby-9.2.0.0\bin\jruby.exe .\output-to-stdout.rb
if ($LASTEXITCODE -ne 0)
{
$email = @{
From = $fromaddress
To = "$toaddress1","$toaddress2"
Subject = $subject
Body = $body -join "`r`n"
SMTPServer = "smtp.example.com"
Encoding = $utf8
}
send-mailmessage @email
}
ここで、外部コマンドの標準出力が複数行存在する場合には注意が必要である。
つまり、-join "`r`n"
を付けておかないと、全て結合されて1行になってしまう。
0 件のコメント:
コメントを投稿
注: コメントを投稿できるのは、このブログのメンバーだけです。