目次
はじめに
「PCがいつログオフされたのか知りたい」「Power Automateで自動的に通知したい」と思ったことはありませんか?
実は、Power Automate(クラウドフロー)とWindowsのイベントログ、そしてPowerShellスクリプトを組み合わせることで、PCがログオフされたときにメールで自動通知することができます。
本記事では、初心者でも実践できる構築手順をわかりやすく解説します。
フローの概要
| 項目 | 内容 |
|---|---|
| 実現方法 | Power Automate(クラウドフロー)+ PowerShellスクリプト |
| トリガー | スケジュール(例:5分ごと) |
| 検知対象 | Windows イベントログ(イベントID: 4647 = ユーザーによるログオフ) |
| 通知手段 | Outlook(またはSMTPメール)でログオフ通知を送信 |
| 中継手段 | ログファイル(OneDriveや共有フォルダ経由) |
ステップ①:PC側にログオフ記録スクリプトを作成
🔧 PowerShellでログオフイベントを記録
ログオフが発生したら、その時刻をファイルに記録するスクリプトを作成します。
# ログオフイベント(ID 4647)を検出し、時刻をファイルに保存
$event = Get-WinEvent -LogName Security -MaxEvents 20 | Where-Object { $_.Id -eq 4647 } | Select-Object -First 1
if ($event) {
$event.TimeCreated | Out-File -FilePath "C:\log\last_logoff.txt"
}
💡 ポイント:
C:\log\フォルダは事前に作成しておきましょう。- イベントID
4647はユーザーによるログオフ操作を示します。
🕒 タスクスケジューラでスクリプトを自動実行
- タスクスケジューラを起動(スタート→検索)
- 「タスクの作成」→名前は例:「LogoffMonitor」
- トリガー:**「特定のイベント」**を選び、以下の条件を設定:
- ログ:Security
- ソース:Microsoft Windows security auditing.
- イベントID:4647
- アクション:**「プログラムの開始」**で以下を設定:
- プログラム:
powershell - 引数:
-File "C:\scripts\logoff.ps1"(※スクリプトパス)
- プログラム:
これで、ログオフのたびにlast_logoff.txtが更新されるようになります。
ステップ②:Power Automateクラウドで定期監視フローを構築
🛠 クラウドフローの構成
以下の手順でフローを構築します。
1. トリガー:スケジュール(5分ごと)
- 「繰り返し」→5分ごとなど任意の間隔で設定
2. アクション:ファイル取得
- 「OneDrive for Business」→「ファイルの内容を取得」
- 対象ファイル:
/log/last_logoff.txt
3. アクション:内容を解析
- 「変数の設定」などで、ファイル内容(日時)を読み込みます
4. 条件分岐:前回通知時間と比較
- 条件:「last_logoff_time > 前回通知時間」
- 新しいログオフであれば、通知処理へ進みます
5. アクション:メール送信
件名:PCがログオフされました
本文:PCは {last_logoff_time} にログオフされました。
※ Outlook または任意のSMTPを選択可能です。
6. アクション:通知済み日時を保存
- 次回比較用に「前回通知時間」を保存(例:別のファイルや変数で保持)
補足:リアルタイム通知の代替アイデア
💡 バッチスクリプトで即時メール送信も可能
もしPower Automateを使わずにすぐに通知したい場合は、以下のバッチをログオフ時スクリプトに設定できます。
powershell -Command "Send-MailMessage -From '通知元@example.com' -To 'あなた@example.com' -Subject 'PCログオフ通知' -Body 'ログオフされました。' -SmtpServer 'smtp.example.com'"
📌 設定方法(グループポリシーエディタ):
gpedit.mscを起動- 「ユーザーの構成」→「Windows の設定」→「スクリプト(ログオフ時)」
- 上記バッチを登録
これにより、PCログオフと同時にメールが飛ぶようになります。
よくある質問(FAQ)
Q1. なぜPower Automateクラウドでは直接PCの状態を監視できないの?
A. Power Automateクラウドはブラウザベースのクラウドサービスなので、ローカルPCの状態には直接アクセスできません。そのため、ファイルを中継する仕組みが必要になります。
Q2. イベントログ監視の精度は高いですか?
A. イベントID4647はユーザー自身のログオフ操作を確実に検知します。ただし、強制終了やクラッシュなど一部の特殊ケースは別イベントIDになります。
Q3. 通知用のSMTPサーバはどうすればいい?
A. Outlookを使っている場合は、Power Automate側でアカウント連携するだけでOKです。独自SMTPを使う場合は、Send-MailMessageでSMTPサーバ名、ポート、認証情報などを指定してください。
