Project

PSTeams

PSTeams is a PowerShell Module working on Windows / Linux and Mac. It allows sending notifications to Microsoft Teams via WebHook Notifications. It's pretty flexible and provides a bunch of options. Initially, it only supported one sort of Team Cards but since version 2.X.X it supports Adaptive Cards, Hero Cards, List Cards, and Thumbnail Cards. All those new cards have their own cmdlets and the old version of creating Teams Cards stays as-is for compatibility reasons.

Stars442
Forks38
Open issues8
PowerShell Gallery downloads1174900
Releasev2.4.0
Language: C# Updated: 2026-10-30

Curated Examples

Compose a notification card

Build a Teams Workflow Adaptive Card with facts, incident ID, fallback text, and a report link.

Import the locally built MessageX module as shown on the installation page. This example needs no endpoint. It produces the Workflow JSON payload for inspection.

$reportUrl = 'https://example.test/reports/inc-42'
$card = New-TeamsAdaptiveCard -Body {
    New-TeamsAdaptiveTextBlock -Text 'Monitoring alert'
    New-TeamsAdaptiveTextBlock -Text 'The health probe failed for server\_name.'
    New-TeamsAdaptiveFactSet -Facts {
        New-TeamsAdaptiveFact -Title 'Incident ID' -Value 'inc-42'
        New-TeamsAdaptiveFact -Title 'Severity' -Value 'Critical'
    }
} -Actions {
    New-TeamsAdaptiveOpenUrlAction -Title 'Open report' -Url $reportUrl
} -FallbackText "Critical: Monitoring alert. Probe failed. Incident inc-42. $reportUrl"

$message = New-TeamsMessage -AdaptiveCard $card -Summary 'Critical monitoring alert'
$message | ConvertTo-TeamsJson | ConvertFrom-Json

The backslash in server\_name is intentional: Teams Markdown can treat an underscore as formatting. MessageX preserves authored text and does not escape every underscore automatically. Action.OpenUrl is the supported Workflow action for a report link; submit, toggle, and reply interactions need another verified transport.