テレワーク中の社員同士が連絡を取り合うには、Slack のようなチームコラボレーションサービスを使うのが便利です。
Slack は、直感的なインタフェースと、Dropbox、GitHub、Trello などのよく使われるサービスと連携できる堅牢な API を備えた使いやすいプラットフォームで、多くの組織で利用されています。
よく使うサービスに Slack が組み込まれていなくても問題ありません。Slack の API を使用すれば、ほとんど何でも自由に構築できます。このブログでは、PowerShell を使用して Slack メッセージを送信する方法を説明します。監視で問題があったときや DevOps リリースのパイプライン・タスクに障害が発生したとき、または何らかの理由で自分に簡単なダイレクトメッセージを送りたいときなどに、PowerShell を使って Slack メッセージを送信することが可能です。
Slack の API と PowerShell モジュールを使用すると、簡単な PowerShell コマンドで Slack に送信するどんなメッセージでも統合でき、Slack チャネルを社員コミュニケーションのハブとして機能させることもできます。
Slack アプリの作成
まず最初に、[Create a Slack App] ページでアプリ名とワークスペースを指定し、Slack アプリを作成します
PowerShell は Slack の API に接続するので、Incoming Webhook を作成する必要があります。
Incoming Webhooks で、オプションを On にして、最下段の Add New Webhook to Workspace ボックスをクリックします。
Webhook でのポストに使うチャネルを選択し、Allow をクリックします。
その後、Incoming Webhooks に戻ると、Webhook URL が表示されているはずです。安全のために、Copy をクリックして、この Webhook URL をコピーしてどこかに貼り付け、保管するようにしてください。
[Webhook URL が取得できたら、PowerShell にドロップするための準備は完了]
PSSlack モジュールの使用
次に、PowerShellを開き、Warren Frame の PSSlack モジュールをダウンロードします。必ずしも使用する必要はありませんが、このモジュールを使用すると、PowerShell から Slack の API とインタラクトするのに便利で、大幅に時間を短縮できます。
PowerShell を使って Slack チャネルにメッセージを送信する準備ができたら、PSSlack モジュールの Send-SlackMessage 関数を使用します。Slack メッセージを送信する方法はいくつかありますが、最も簡単なのは Webhook URL を使用する方法です。PSSlack モジュールがセッションにロードされたら、Send-SlackMessage 関数を使用して Webhook URL とメッセージテキストを指定します。
Send-SlackMessage -Uri-Text 'testing'
これで、Slack の Incoming Webhook で設定したチャネルにメッセージが送信されます。
ただ、このままでは、メッセージを送信するたびに、長い Webhook URL を入力しなければなりません。この面倒を避ける1つの方法は、デフォルトのパラメータが入った関数を作成することです。
以下に、Send-Notification という関数の例を示します。この関数を使用して、Send-Notification -Message 'メッセージテキスト' と入力(メッセージテキストには具体的なメッセージを入れる)するだけでSlack の Incoming Webhook で設定したチャネルにメッセージが送信され、いちいち長い Webhook URL を入力する必要がなくなります。
Function Send-Notification {
Param(
[Parameter(Mandatory)]
[string]$Message,
[Parameter()]
[string]$SlackWebhookURI = ''
)
Send-SlackMessage -Uri $SlackWebhookURI -Text $Message
}
まとめ
Slack の API と PowerShell を使用してできることのごく一部について紹介しました。Slack API については、詳細を調べて、何が考えられるか検討してみてください。PSSlack PowerShell モジュールを使用するか、独自のモジュールを作成して、様々なメッセージ送信を自動化できると思います。
Adam Bertram
Adam Bertram is a 20-year veteran of IT. He’s currently an automation engineer, blogger, independent consultant, freelance writer, author, and trainer. Adam focuses on DevOps, system management, and automation technologies as well as various cloud platforms. He is a Microsoft Cloud and Datacenter Management MVP and efficiency nerd that enjoys teaching others a better way to leverage automation.