PowerShell でイベントログを Slack へ送信する(2)Slack APIでイベントログを送信する

YAGISHITA,Shigeru
本日もご安全に
6 min readJul 28, 2018

--

アクセストークンを取得してテストもOKだったので、PowerShell により Slack API を呼んでイベントログを送信してみます。

使用するコマンドレットは?

PowerShell から REST Web API を呼び出すには以下を参考にし、

Invoke-RestMethodコマンドレットを使用します。

テストの内容をそのまま PowerShell で実現してみる

テストは以下のURLでテストをしました。

https://slack.com/api/chat.postMessage?token=xoxp-xxx-xxx-xxx-xxx&channel=general&text=Hello%20World

これをInvoke-RestMethodコマンドレットを使用して以下のように PowerShell で呼び出してみます。

Invoke-RestMethod -Uri "https://slack.com/api/chat.postMessage"  -Method POST -Body @{ token="xoxp-xxx-xxx-xxx-xxx"; channel="general"; text="Hello World" }	

実行しますと、以下のように返ってきて

以下のようにメッセージがポストされました。

イベントログを送信送信してみる

PowerShell から Slack API を使ってメッセージをポストすることができたので、イベントログを送信するスクリプトを作成します。

以前イベントログをメール送信する PowerShell スクリプトを作成しました。

これをメール送信ではなく、Slack へのメッセージ送信に置き換えます。
従って、タスクスケジューラーの設定等は上記のとおりそのままです。

#現在時刻取得$datetime = Get-Date#Slack へメッセージポストする設定値$token = "xoxp-xxx-xxx-xxx-xxx"
$username = "My App"
$channel = "general"
$icon_emoji = ":cold_sweat:"
#イベントログを取得する$logmessage = Get-EventLog -LogName System -Before ($datetime) -Newest 1 -EntryType Error | Format-List | Out-String
$text = "イベントログ " + $datetime.ToString() + $logmessage
#SlackへメッセージをポストInvoke-RestMethod -Uri "https://slack.com/api/chat.postMessage" -Method POST -Body @{
token = $token;
channel = $channel;
username = $username;
icon_emoji = $icon_emoji;
text = $text
}

以下のことをやっています。イベントログ取得については「PowerShell でイベントログをメール送信する」のままです。

  1. 時刻取得
  2. Slack へメッセージポストする設定値を変数に格納
    今回は username に ”My App” 、icon_emoji に 😰 を設定してみました。
  3. Get-EventLog コマンドレットでイベントログ取得。
    オプションで各種フィルタを設定(このスクリプトを起動するタスクスケジューラに設定したフィルターと同じフィルターを設定。ここでは-LogName-EntryType)、-Before ($datetime) -Newest 1 とオプションを設定することで、このスクリプトが起動した時刻以前の最新1件目のイベントを取得する。 Format-List コマンドレットにパイプで渡してフォーマット、Out-String コマンドレットにパイプで渡して String にする。
  4. Invoke-RestMethodで Slack API (chat.Message)を呼び出して、イベントログの内容をメッセージとしてポスト。

このスクリプトを実行してみます。

無事送信できました。あとはこのスクリプトをタスクスケジューラーでタスクとして設定(「PowerShell でイベントログをメール送信する」参照) して完了です。

--

--

YAGISHITA,Shigeru
本日もご安全に

一応ファイターズファンであるものの札幌移転でFに関係なくパ観戦。小川皓市の小川皓市的こころ。川名コーチ/北見運送/システム開発者/WPF/Windows Phone/中田ヤスタカにやられてる/954深夜/お笑い/赤い電車。精神年齢15でアラフォー。なにしてんだろ。