Powershell を使って Teams へチャット投稿してみる。

Microsoft365 Powershell


企業の運用ではメール利用が多く、「メールの見逃し」「メール確認が遅れる」問題があります。

この問題の解決する手段として Powershell を使って Microsfot Teams のチャネルへ投稿できるか試してみました。

今の現状として、Microsfot Teams の利用はもっぱらチャットのみ行っており、結局メールと両方のソフトを利用している現状があります。メールソフトを使うと、個人のメーラ設定に依存して、メール検知に差異が生まれたり、結果として運用品質が一定しない課題があります。

この課題の改善策として、今までメールで受信していたメッセージの一部を Microsfot Teams へ投稿してみようと試しました。

2020/04/22 スクリプトに誤記がありましたので修正しました。



1.インフラ運用でのメール依存しすぎる問題

エラーがあったときは外部メール通知するなどエラー通知方法で対応しています。しかし、現状運用として障害に気づきにくいこともあります。原因としては以下の項目が多いのではないかと想定しています。

  • メールが読む環境が必要
  • そもそも不要なメールが多い
  • 必要なメールを見過ごす

通常の運用ではメールは1日に1000通以上も受信することもあり、各個人が行うには限界があります。

メーラーは人や企業によってはソフトウェア、個人設定、メールの受信ルールもそれぞれ異なっている現実があります。

そもそもメールの受信は常にソフトウェアのウィンドウを開いておく必要があり、効率が悪いです。かといって、ソフトウェアを最小化するとメールの見逃しが発生してしまいます。

一部の業務で Powershell を利用している場合、メール機能を利用するのではなく、直接Teamsのチャネルへ投稿することでチャネルのメンバー全員が気づき、迅速な対応が行えます。


2.Teams への投稿する手順を解説

チャネルへの投稿方法は事前に準備が必要です。
Teams のコネクタを追加・設定することで、すぐにお使いいただけます。

Teams のコネクタを追加

Teamsのチャネルに対して “Incoming Webhook” というコネクタを追加します。
チャネルの「…」マークをクリックし、[コネクタ]を開きます。
検索に “Incoming Webhook” と入力して追加します。

名前を入力して [作成] を選択します。

チャネル専用のURLが公開されますので、クリップボードにコピーしておきます。
[完了] をクリックして、コネクタの追加を確認します。

Powershell スクリプトを組んでみる

チャットへの投稿はシンプルで、以下のサンプルで投稿可能です。
サンプルスクリプト

$uri = “取得したURI”
$body = ConvertTo-JSON @{
text = ‘Hello Channel’
}
Invoke-RestMethod -uri $uri -Method Post -body $body -ContentType ‘application/json’

出典:マイクロソフト情報より抜粋
https://docs.microsoft.com/ja-jp/archive/blogs/privatecloud/post-notifications-to-microsoft-teams-using-powershell

$uri の値に、コネクタ追加したURLを代入します。気をつけることは、URLはシングルクオーテーションで囲みます。

試しに投稿してみると、問題なく投稿できました。

日本語で文字化けする問題を解消

英語での投稿は問題ないのですが、日本語の2バイト文字は文字化けしてしまいます。

具体的に .NET Framework の System.Text.Encoding を使って文字コード変換します。
以下のコマンドをInvoke-RestMethod の前に挿入します。

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

テスト送信行いますと、正常に日本語表示になりました。




3.まとめ

運用のスクリプト(Powershell)での通知方法として、Teams への投稿はできました。
Teams への投稿から、たとえば Planner にタスク管理を振り分けたりすることで、「チーム間の運用課題の解消」「生産性の向上」も可能になります。

使い方次第ではほかの用途にも利用でき、Teams がコミュニケーションハブとして利用できます。

スポンサードサーチ