Posting Messages to MS Teams with PowerShell

We are starting to use Microsoft Teams more and more for (suprisingly) team communication. We have a dedicated channel for product releases that Azure DevOps pipelines post to for build notifications but strangely I had always thought of wiring that together as being really arcane and difficult. Turns out, I tried and it was super easy.

First, in Teams, you need a channel that you can post to. Click on the right-hand side '...' and pick connectors from the menu.

Next, select "Incoming Webhook", give the web hook a name, an optional icon that will appear in each posting, and copy out the url that is generated.

Write a PowerShell script like this to post to the webhook and you're done.



[CmdletBinding()]
Param (
    [Parameter(Mandatory=$True, HelpMessage="Web hook endpoint configured on a channel in Teams")]
    [string]$WebHook,

    [Parameter(Mandatory=$True, HelpMessage="Message to post to the channel")]
    [string]$Message
)

$Post = @{ text = $Message }

$JsonifiedObject = $Post | ConvertTo-Json

Invoke-RestMethod -Uri $WebHook -Method post -Body $JsonifiedObject -ContentType 'Application/Json' 

So, the moral of the story is, try a project you know nothing about how to do, it may not be as bad as you thought.