Powershellで定時でSlack投稿する
想定読者
- 会社でWindows環境しかない (cronが使えない)ひと
- 会社の事情により, 仮想化環境でLinuxも利用できないひと
- とりあえずWindowsだけですませたいひと
- 定時でSlackに投稿することで、意識付けとかしたいひと
利用するツール
- Powershell
- タスクスケジューラ
Slackでの設定
基本的にはPowershellからSlackのIncomming webhookをコールして、投稿を実施する。
設定手順は下記の通り。(だいぶ端折ったが、様々な記事で公開されている無いようなので簡素にする)
-
https://{workspace-name}.slack.com/appsにアクセスする -
Incoming Webhooksに移動し、Add cofigurationをクリック。適切な情報を入力してWebhookのURLを入手する。
Powershellの設定
Powershellは専用のScriptを書いて実行することが可能だが、少し設定をupdateする必要があり少しめんどくさい。
そこで、この記事ではスクリプトは利用せずに実行する。
また、Webhookをコールするためには、cURLではなくInvoke-RestMethodなるものを活用する。
Powershell上でのSlack webhookコール
下記のコマンドを実行することで、WebhookからSlackに投稿できることを確認する。
powershell -Command "Invoke-RestMethod -Method Post -Body \""{ 'text':'hello world!' }\"" -Uri \""https://{webhook-uri}"""
-Command移行を直接powershell上で実行することでも同様の実行はできるが、後続のタスクスケジューラではこの形式での呼び出しになるため、この方式でトライをする。
タスクスケジューラの設定
手順は下記
- タスクスケジューラを起動し、タスクの作成をクリック。
- 操作タブをクリック、新規ボタンを押下
- プログラム/スクリプトに
%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exeを入力 - 引数の記載に
powershell -Command "Invoke-RestMethod -Method Post -Body \""{ 'text':'hello world!' }\"" -Uri \""https://{webhook-uri}"""を入力
以上で、定時実行でSlackにポストされるはずである。