2
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Windows のイベント ログに特定のイベントが記録されたら LINE WORKS の Bot で通知

Last updated at Posted at 2019-05-08

Windows のイベント ログに特定のエラー イベントが記録された時に、LINE WORKS の Bot API で通知します。

PowerShell スクリプト

以下の記事に記載した PowerShell のスクリプトを基に、Get-EventLog コマンドレットでイベントの内容を取得し、トークに含めるような変更を行いました。

TITLE: PowerShell から トーク Bot API で LINE WORKS にメッセージ送信
URL: https://qiita.com/iwaohig/items/92a3b5b4af288c22a96a

Windows のタスク スケジューラにイベントをトリガーに、スクリプト ファイルを実行するようタスクを作成します。

スクリプト例は以下のとおりです。

$header = New-Object "System.Collections.Generic.Dictionary[[String],[String]]"
$header.Add("Content-Type","application/json; charset=UTF-8")
$header.Add("consumerKey","<Server API Consumer Key>")
$header.Add("Authorization","Bearer <Server Token>")
$header.Add("Cache-Control","no-cache")

$botno = "<Bot No.>"
$accountId = "<user id>"

$GetEventLog = Get-EventLog -LogName System  -Newest 1 -EntryType Error
$EventLog = "エラーを検知しました \r\n\r\n[日時] \r\n" + [string]$GetEventLog.TimeGenerated + "\r\n\r\n[ソース] \r\n" + [string]$GetEventLog.Source + "\r\n\r\n[メッセージ] \r\n" + [string]$GetEventLog.Message


$request = @"
{
    "botNo": $botno,
    "accountId": "$($accountId)",
    "content": {
        "type": "text",
        "text": "$($EventLog)"
    }
}
"@


$Body = [System.Text.Encoding]::UTF8.GetBytes($request)

$Uri = "https://apis.worksmobile.com/<API ID>/message/sendMessage/v2"
Invoke-RestMethod -Uri $Uri -ContentType 'application/json' -Method Post -Header $header -Body $Body

単純にトークで通知を送るだけでなく、トリガーとなったイベントの概要を含めたメッセージを生成するために Get-EventLog コマンドレットを用います。

Get-EventLog の詳細はこちらの Microsoft のドキュメントを参照してください。

TITLE: Get-EventLog
URL: https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.management/get-eventlog?view=powershell-5.1

上記のスクリプト例では、以下のようにシステムのイベント ログを取得しています。
適宜、取得対象のイベントに合わせて書き換えてください。

Get-EventLog -LogName System  -Newest 1 -EntryType Error

さらにスクリプト例では、取得したイベントの詳細から生成日時、ソース、内容の項目をトーク メッセージに含める処理を行っています。こちらも、トーク メッセージに含めたい項目に合わせて書き換えてください。

タスクスケジューラ

Windows のタスクスケジューラを起動し、イベント ログの記録をトリガーに PowerShell スクリプトを実行するタスクを作成します。

カスタム イベント フィルターで任意のイベント記録をトリガーとするよう設定できます。
image.png

作成した PowerShell スクリプト ファイルが実行されるよう設定します。

image.png

動作確認

トリガーに指定したイベントの記録時に Bot から当該イベントの概要を含む通知メッセージが届きます。

2
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?