今回は、PowerShell から任意のチームのチャネルに対して Teams チャットを送信する方法を記載します。
事前準備
あらかじめ、チャットを送付するチームとチャネルを作成しておきます。
ワークフローの作成
Teams アプリの「…」をクリックし、「Workflows」をクリックします。

「新しいフロー」をクリックします。

画面右上の「+ 一から作成」をクリックします。

検索バーに「webhook」と入力し、検索結果の中から「Microsoft Teams Webhook」を選択します。

「Teams Webhook 要求を受信したとき」をクリックします。

「Who can trigger the flow」:Any user in my tenant をドロップダウンで選択し、「新しいステップ」をクリック
※URL はワークフロー保存後に値が入るため、保存後にワークフローを開いて、登録された URL を確認します。

検索バーに「teams」と入力して検索し、表示された「Microsoft Teams」をクリックします。

アクション「チャットまたはチャネルでメッセージを投稿する」を選択します。

以下のように設定し、「保存」をクリック
投稿者:フローボット
投稿先:Channel
Team:<任意のチーム>
Channel:<任意のチャネル>
Message:式で “triggerBody()” を指定します。

ワークフローの設定はここまで
PowerShell からのメッセージ送信
以下のように PowerShell コマンドを実行することで、先ほど作成したワークフローのエンドポイントに JSON メッセージを送付し、その内容がフックされて指定したチームのチャネルへと投稿されます。
(以下の例では、$result と $details の内容を出力するような内容になっています。)
$uri="取得した URI"
$body = ConvertTo-JSON @{
result = $result
details = $details
}
Invoke-RestMethod -uri $uri -Method Post -body $body -ContentType 'application/json'
Teams に送付されたメッセージ
今回は $result に処理結果、$details にはエラー内容を格納して、通知することを想定しているので、以下のような内容としています。
$result = "Failed"
$details = "User XXX was not found."
$uri="取得した URI"
$body = ConvertTo-JSON @{
result = $result
details = $details
}
Invoke-RestMethod -uri $uri -Method Post -body $body -ContentType 'application/json'
ちゃんと指定したメッセージが届くことが確認できました。
