This PowerShell Module allows to send notifications to Microsoft Teams. It's pretty flexible and provides a bunch of options. While there are already 2 other modules related to sending notifications to Teams this one takes it a step further. Inspiration for this module came from Matthew Houston and was my starting point. In it's newest form it's cross-platform so you're able to send notifications from your PowerShell Scripts/Modules on Windows / Linux or MacOs.
Below is one of big example that covers lots of options showing current possibilities of this PSTeams module.
Clear-Host Import-Module PSTeams $TeamsID = 'https://outlook.office.com/webhook/a5c7c95a....' $Color = 'Chocolate' $Button1 = New-TeamsButton -Name 'Visit English Evotec Website' -Link "https://evotec.xyz" $Button2 = New-TeamsButton -Name 'Visit Polish Evotec Website' -Link "https://evotec.pl" $Fact1 = New-TeamsFact -Name 'Bold' -Value '**Special Bold value**' $Fact2 = New-TeamsFact -Name 'Italic and Bold' -Value '***Italic and Bold value***' $Fact3 = New-TeamsFact -Name 'Italic' -Value 'Date with italic *2010-10-10*' $Fact4 = New-TeamsFact -Name 'Link example' -Value "[Microsoft](https://www.microsoft.com)" $Fact5 = New-TeamsFact -Name 'Other link example' -Value "[Evotec](https://evotec.xyz) and some **bold** text" $Fact6 = New-TeamsFact -Name 'This is how list looks like' -Value " * hello * 2010-10-10 * test * another * test * hello" $Fact7 = New-TeamsFact -Name 'This is strike through example' -Value "<strike> This is strike-through </strike>" $Fact8 = New-TeamsFact -Name 'List example with nested list' -Value " - One value - Another value - Third value - Fourth value " $Fact9 = New-TeamsFact -Name 'List example with a twist' -Value " 1. First ordered list item 2. Another item * Unordered sub-list. 1. Actual numbers don't matter, just that it's a number 1. Ordered sub-list 2. Another entry 4. And another item. " $Fact10 = New-TeamsFact -Name 'Code highlight' -Value "This is ``showing code highlight`` " $Fact11 = New-TeamsFact -Name '' -Value " ### As you see I've not added Name at all for this one and it merges a bit with Fact 10 This is going to add horizontal line below. While this line is highlighed. --- And a block quote > Block quote # H1 ## H2 ### H3 #### H4 ##### H5 ###### H6 " $Section1 = New-TeamsSection ` -ActivityTitle "**Przemyslaw Klys**" ` -ActivitySubtitle "@przemyslawklys - 9/12/2016 at 5:33pm" ` -ActivityImageLink "https://pbs.twimg.com/profile_images/1017741651584970753/hGsbJo-o_400x400.jpg" ` -ActivityText "Climate change explained in comic book form by xkcd xkcd.com/1732" ` -Buttons $Button1, $Button2 ` -ActivityDetails $Fact1, $Fact2 $Section2 = New-TeamsSection ` -ActivityTitle "**Przemyslaw Klys**" ` -ActivitySubtitle "@przemyslawklys - 9/12/2016 at 5:33pm" ` -ActivityImageLink "https://pbs.twimg.com/profile_images/1017741651584970753/hGsbJo-o_400x400.jpg" ` -ActivityText "Climate change explained in comic book form by xkcd xkcd.com/1732" ` -Buttons $Button1 ` -ActivityDetails $Fact3, $Fact4, $Fact5, $Fact6, $Fact7, $Fact8, $Fact9, $Fact10, $Fact11 $Section3 = New-TeamsSection ` -ActivityTitle "**Przemyslaw Klys**" ` -ActivitySubtitle "@przemyslawklys - 9/12/2016 at 5:33pm" ` -ActivityImage Add ` -ActivityText "Climate change explained in comic book form by xkcd xkcd.com/1732" ` -Buttons $Button1 ` -ActivityDetails $Fact3, $Fact4, $Fact5, $Fact6, $Fact7, $Fact8, $Fact9, $Fact10, $Fact11 Send-TeamsMessage ` -URI $TeamsID ` -MessageTitle 'Message Title' ` -MessageText 'This is text' ` -Color Chocolate ` -Sections $Section2, $Section1 Send-TeamsMessage ` -URI $TeamsID ` -MessageTitle 'Message Title' ` -MessageText 'This is text' ` -Color Chocolate ` -Sections $Section3
While it may seem intimidating at first you just need to understand the concept. A message to Microsoft Teams consist of:
You can only have 1 MessageTitle, 1 MessageText, 1 Color. You can however have multiple sections. Each section can consist of multiple fields:
$Section3 = New-TeamsSection ` -ActivityTitle "**Przemyslaw Klys**" ` -ActivitySubtitle "@przemyslawklys - 9/12/2016 at 5:33pm" ` -ActivityImage Add ` -ActivityText "Climate change explained in comic book form by xkcd xkcd.com/1732" ` -Buttons $Button1 ` -ActivityDetails $Fact3, $Fact4, $Fact5, $Fact6, $Fact7, $Fact8, $Fact9, $Fact10, $Fact11
As seen above you can create multiple buttons
$Button1 = New-TeamsButton -Name 'Visit English Evotec Website' -Link "https://evotec.xyz" $Button2 = New-TeamsButton -Name 'Visit Polish Evotec Website' -Link "https://evotec.pl"
And multiple facts (to use with ActivityDetails).
$Fact1 = New-TeamsFact -Name 'Bold' -Value '**Special GPO**' $Fact2 = New-TeamsFact -Name 'Italic and Bold' -Value '***Other values***' $Fact3 = New-TeamsFact -Name 'Italic' -Value '*2010-10-10*' $Fact4 = New-TeamsFact -Name 'Link example' -Value "[Microsoft](https://www.microsoft.com)" $Fact5 = New-TeamsFact -Name 'Other link example' -Value "[Evotec](https://evotec.xyz) and some **bold** text"
As you can see above you can use simple markdown to format your Teams Cards.
Create channel or use the own you want to use
Press 3 dots and open up Connectors.
From the list of connectors choose Incoming Webhook
Name your Incoming Webhook, upload an image you want webhook to use.
Finally when you create connector all you have to do now is copy the URI from connector to use in scripts.
In my example this is called TeamsID. Enjoy!