Windows Server
 Computer >> コンピューター >  >> システム >> Windows Server

Windowsイベントトリガー活用術:システムログのイベントにタスクを連動させる方法

Windows Server 2008(Windows Vista)以降、システムログ内の任意のイベントに対してタスクスケジューラのタスクを紐付ける新機能が搭載されました。この機能を活用すれば、管理者は特定のWindowsイベントが発生した際に、スクリプトの実行やメールアラートの送信などを自動的に行うことができます。本記事では、この機能について詳しく解説します。

タスクスケジューラとイベントビューアーの連携

特定のWindowsイベント発生時にタスクを実行する仕組みは、タスクスケジューラ(Task Scheduler)イベントビューアー(Event Viewer)の緊密な統合によって実現されています。イベントビューアーのコンソールから直接、任意のWindowsイベントに対してスケジューラタスクを割り当てることが可能です。イベントへの応答として、タスクスケジューラはスクリプトの実行や、管理者(またはその他のユーザー)へのメール通知を行えます。

ここでは例として、「Active Directoryユーザーアカウントがロックアウトされたことをセキュリティ管理者に通知する」というタスクを想定します。

ヒント: このイベントは説明のための一例として選んだものです。実際には、この機能の応用範囲は非常に広く、Windowsサービスの停止通知、Exchangeバックアップ完了後のアプリケーション実行、Active Directoryセキュリティグループの変更通知、特定のディレクトリやファイルの変更検知など、さまざまな用途に活用できます。

イベントへのタスク割り当て手順

ADユーザーアカウントのロックアウトイベントは、ドメインコントローラーのセキュリティログに記録されます。ロックアウトのイベントIDは4740です。イベントビューアー(eventvwr.msc)を開き、該当イベントを探します。イベントを右クリックし、[このイベントへのタスクのアタッチ]を選択します。

Windowsイベントトリガー活用術:システムログのイベントにタスクを連動させる方法

基本タスク作成ウィザードが起動します。タスク名は自動的に生成され(Security_Microsoft-Windows-Security-Auditing_4740)、そのまま使用して問題ありません。

Windowsイベントトリガー活用術:システムログのイベントにタスクを連動させる方法

次のステップでは、イベントログの種類、ソース、イベントIDが表示されます(すべてのフィールドは自動入力されており、この段階では編集できません)。

Windowsイベントトリガー活用術:システムログのイベントにタスクを連動させる方法

イベントへの応答アクションの選択

続いて、イベント発生時の応答タイプを選択します。以下の3種類から選べます。

  • プログラムの開始
  • 電子メールの送信
  • メッセージの表示

Windowsイベントトリガー活用術:システムログのイベントにタスクを連動させる方法

ここではメール通知を選択します。送信者、受信者、SMTPサーバーのアドレス、件名、本文を指定してください。

Windowsイベントトリガー活用術:システムログのイベントにタスクを連動させる方法

ウィザードの最後のステップでトリガーの設定内容を確認できます。完了すると、イベント4740に接続された新しいタスクがタスクスケジューラに登録されます。[管理ツール]からタスクスケジューラコンソールを開き、[タスクスケジューラライブラリ] → [Event Viewer Tasks]で新しいタスクを確認できます。

Windowsイベントトリガー活用術:システムログのイベントにタスクを連動させる方法

ここでは、イベントトリガーの設定変更や、テスト実行による動作確認も可能です。

Windowsイベントトリガー活用術:システムログのイベントにタスクを連動させる方法

ヒント: 1つのトリガーを複数のイベントIDに紐付けたい場合は、イベントIDをカンマ区切りで指定します。

これでトリガーが有効になりました。以降、ADアカウントがロックアウトされるたびに、指定したメールアドレスへ通知メールが送信されます。

Windowsイベントトリガー活用術:システムログのイベントにタスクを連動させる方法

旧バージョンでの代替手段:eventtriggers.exe

補足: Windows Server 2003以前のWindowsでは、同じ機能はコンソールユーティリティのeventtriggers.exeで実現されていました。このユーティリティもシステムログ内のイベントを監視し、特定のイベントにトリガーを割り当てることができます。たとえば、イベント4740に対してVBSまたはPowerShellスクリプトを割り当て、管理者のメールボックスにメールを送信する場合のコマンドは次のようになります。

eventtriggers /create /TR "Lock Account" /TK "C:\WINDOWS\system32\windowspowershell\v1.0\powershell.exe c:\script\SendEmailAlert.ps1" /L Security /EID 4740

イベント詳細をメールに添付する方法

上記のシンプルな通知だけでは情報量が少なく、イベントの詳細を確認するにはイベントビューアーを開く必要があります。そこで、イベントログのデータをメールに添付してみましょう。Windowsログから任意のイベント情報を取得するには、wevtutilユーティリティを使用します。セキュリティログから最新の4740イベントの情報を取得するには、次のコマンドを実行します。

wevtutil qe Security /q:"*[System[(EventID=4740)]]" /f:text /rd:true /c:1

次に、2行で構成されるスクリプト(query.cmd)を作成します。1行目で前回のログファイルを削除し、2行目で最新のイベントを取得してログファイルに保存します。

del c:\script\query.txt
wevtutil qe Security /q:"*[System[(EventID=4740)]]" /f:text /rd:true /c:1 > c:\script\query.txt

あとは、先ほど作成したトリガーの設定をタスクスケジューラで開きます。[操作] タブで新しい操作として「query.cmdスクリプトの起動」を追加し、右側の矢印ボタンを使ってこの操作をリストの最上部に移動します(スクリプトを最初に実行させるためです)。

Windowsイベントトリガー活用術:システムログのイベントにタスクを連動させる方法

次に、2番目の操作であるメール送信を編集し、添付ファイルとして c:\script\query.txt を指定します。

注意: この例でタスクを正しく動作させるには、昇格された権限で実行する必要があります。[全般] タブの設定で[最上位の特権で実行する]にチェックを入れてください。

Windowsイベントトリガー活用術:システムログのイベントにタスクを連動させる方法

再度タスクをテストしてみましょう。今度は管理者宛てに、アカウント名、ロックアウト日時などの有用な情報を含む添付ファイル付きの通知メールが届きます。

Windowsイベントトリガー活用術:システムログのイベントにタスクを連動させる方法

イベントトリガー活用のポイントと注意点

ヒント: Windowsイベントトリガーを使ってサーバーの重大な問題を管理者に警告することは、System Center Operations ManagerやZenossのような本格的な監視システムの完全な代わりにはなりません。しかし、導入コストやスタッフ研修の必要がない、小規模ビジネス向けの手軽な組み込み監視・通知ツールとしては非常に有用です。

システムログのイベントへのスケジューラタスクの紐付けは、Windows Server 2008 / Vista以降のすべてのWindowsバージョンで利用可能です。この機能により、サーバーの特定の問題をすばやく管理者に通知し、迅速な対応が可能になります。

注意: Windows Server 2012 R2のタスクスケジューラでは、メール送信機能が非推奨となっており使用できません。メール送信が必要な場合は、PowerShell 3.0のSend-MailMessageコマンドレットを使用することをお勧めします。

  1. Windows 10でイベントID 1000(アプリケーションエラー)を修正する6つの方法

    MicrosoftのWindows 10は現在、世界で最も利用されているオペレーティングシステムですが、エラーや不具合とは無縁というわけではありません。Windowsがクラッシュする原因は数多くありますが、その一つが「イベントID 1000」として記録されるアプリケーションエラーです。このエラーが発生すると、エラーメッセージが表示され、実行しようとしていたプログラムが強制終了します。再度起動しようとしても開かないことがあり、仮に開いた場合でも正常に動作しないケースがあります。 本記事では、Windows 10で発生するアプリケーションエラー1000を解決するための具体的な対処法を6つ紹介します

  2. Windowsでタスクを自動化する方法【タスクスケジューラ活用ガイド】

    ノートパソコンやデスクトップPCは、多くの人にとって欠かせないツールとなっています。仕事をこなすのも、家族や友人との連絡も、一日の終わりにリラックスすることも、Windowsが動作するデバイスならすべてこなせます。こうした環境を常に快適に保つため、Windowsはバックグラウンドで更新プログラムの確認や一時ファイルの削除など、数多くのメンテナンスタスクを自動的に実行しています。これらは「タスクスケジューラ」というツールによって管理されており、このツールは自分で作成したスクリプトでも自由にカスタマイズできます。基本的な使い方としては、特定の条件が満たされたときに特定のアプリを自動的に開くといった