ガチャつくブログ

IT系のお勉強のために、やってみたことをアウトプットしていきます。

MENU

Microsoft Teams で遊ぶ - WindowsUpdateのお知らせを自動で通知 -

f:id:tmt-tty:20190209223315p:plain

はじめに

Teamsのコネクタを活用してみます。

システム運用の仕事をしている方は、毎月のWindowsUpdate対応されていると思います。
WindowsUpdateの公開日は、日本では毎月第2火曜日の翌日ですが、これ結構忘れちゃうんですよね。。

ですので、Teamsのチャンネルに毎月WindowsUpdateのお知らせを自動投稿する様にしてみたいと思います。

 

必要なもの

  • Microsoft Teams
    Microsoftが提供しているチャットコミュニケーションツールです。
    Office365のライセンスがあれば使用可能です。

    products.office.com

  • Windowsマシン
    通知のトリガーをタスクスケジューラで設定します。また、バッチファイル・PowerShellスクリプトを使用して、Teamsへ投稿します。

やり方

早速やっていきます。

Teamsの設定から。使用可能なチームが作られている事が前提です。

チームのチャンネル横の"・・・"をクリックし、"コネクタ"をクリックします。

f:id:tmt-tty:20190209214659p:plain

 

"Incoming Webhook" の "追加"をクリックします。

Incoming Webhookは外部サービスからTeamsへ投稿するためのWebAPIで、HTTPのPOSTメソッドなどでメッセージのやり取りが可能になります。

f:id:tmt-tty:20190209215046p:plain

 

"インストール"をクリックします。

f:id:tmt-tty:20190209215318p:plain

 

名前、画像を決めます。

f:id:tmt-tty:20190209215508p:plain

"作成"をクリックします。

f:id:tmt-tty:20190209215633p:plain

次の画面で、作成されたURLをコピーしておきます。

"完了"をクリックします。

f:id:tmt-tty:20190209215841p:plain

コネクタ画面の"構成済み"⇛"管理"からURLの確認などが可能です。

f:id:tmt-tty:20190209220043p:plain

 

Teams側の準備は完了です。

 

続いてWindowsマシンでバッチファイルPowerShellスクリプトタスクスケジューラの設定をします。

構成は、タスクスケジューラからバッチファイルを起動、バッチファイルに記述されているPowerShellスクリプト起動となります。

 

Powerシェルスクリプトから。

notify_to_teams_WindowsUpdate.ps1

$URI = 'Incoming Webhookで作成したURL'
$body = ConvertTo-JSON @{
 text  = "WindowsUpdate[更新プログラムはこちら](https://portal.msrc.microsoft.com/ja-jp/eula)"
 title = "Hello Teams! 明日はWindowsUpdateの日だよ!"
}
$body = [Text.Encoding]::UTF8.GetBytes($body)
Invoke-RestMethod -uri $URI -Method Post -body $body -ContentType 'application/json'

 

続いてバッチファイル

notify_start_Windowsupdate.bat

cd Powershellスクリプトのディレクトリ
powershell -NoProfile -ExecutionPolicy Unrestricted .\notify_to_teams_WindowsUpdate.ps1

 

タスクスケジューラの設定です。

トリガーは毎月第2火曜日の10:00にしています。

f:id:tmt-tty:20190209222053p:plain

 

先程のバッチファイルを開始する操作を入れています。

f:id:tmt-tty:20190209222142p:plain

 

これで、トリガーのタイミングでTeamsに下記の様に投稿されるようになります。

f:id:tmt-tty:20190209222257p:plain