Windowsに誰かがログオンしたらそのユーザ名をメールで送信する

わりと機密度が高いPCがあってそこに誰かがログインしたらメールで教えてほしいときに、
以下の手順でメールを送信する。

  • powershellでメールを送信する
  • タスクスケジューラでタスクを作成する

powershellでメールを送信する

以下を参照しました。
http://www.atmarkit.co.jp/ait/articles/1407/01/news018.html

#SMTPサーバーの設定
$smtpHost = "ホストorIP"
$msgFrom = "送信元アドレス"
$accountName = "メールアカウントユーザ名"
$accountPass = "メールアカウントパスワード"
$smtpPort = 587   #SMTPポート番号
$smtpSSL = $false     #SSL暗号化($trueまたは$false)
#SMTPクライアントの設定
$objEmail = new-object System.Net.Mail.SmtpClient
$objEmail.Host = $smtpHost
$objEmail.Port = $smtpPort
$objEmail.EnableSSL = $smtpSSL
$objEmail.Credentials = New-Object Net.NetworkCredential
$objEmail.Credentials.UserName = $accountName
$objEmail.Credentials.Password = $accountPass
#メッセージ送信
$objEmail.Send($msgFrom,$msgTo,$msgSubject,$msgBody)

このスクリプトをsndmsg.ps1としてc:\scriptsに保存しました。

次にこのスクリプトでメール送信できるか確認します。

powershellを起動します。
c:\scripts\sndmsg.ps1 -msgTo '送り先' -msgSubject '件名' -msgBody '本文'

エラーなくスクリプトが終了すれば送信できているはずです。

タスクスケジューラでタスクを作成する

新しいタスクの作成

1.png

「全般」タブ

  • 名前に適切な文字列を入力
  • 「セキュリティオプション」の「ユーザーがログオンしているかどうかにかかわらず実行する」をオンする 2.png

「トリガー」タブ

  • 「新規」ボタンをクリック
  • 「タスクの開始」を「ログオン時」に変更

3.png

「操作」タブ

  • 「新規」ボタンをクリック
  • 「操作」を「プログラムの開始」に変更
  • 「プログラム/スクリプト」にpowershell.exe
  • 「引数の追加」に -Command "c:\scripts\sndmsg.ps1 -msgTo '送り先メールアドレス' -msgSubject '題名' -msgBody '本文'"
  • 送り先メールアドレス、題名、本文は適切に書き換えてください

4.png

「条件」タブ

5.png

「設定」タブ

6.png


以上で誰かがPCにログオンしたことをメールで知らせてくれます。

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.