PowerShellのSend-MailMessageで外部コマンドの標準出力を電子メールを送る際に改行を維持する

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 件のコメント:

コメントを投稿

注: コメントを投稿できるのは、このブログのメンバーだけです。

plgarc/wip/llama.cppでpkgsrcのBLASサポートを探る

この記事は、 NetBSD Advent Calendar 2024 の13日目の記事です。 llama.cppを使ってみる 以前に、 NetBSD/amd64でllama.cppを使ってみる という記事で llama.cpp を使ってみていました。 あれか...