Windows OS Hub
  • Windows
    • Windows 11
    • Windows Server 2022
    • Windows 10
    • Windows Server 2019
    • Windows Server 2016
  • Microsoft
    • Active Directory (AD DS)
    • Group Policies (GPOs)
    • Exchange Server
    • Azure and Microsoft 365
    • Microsoft Office
  • Virtualization
    • VMware
    • Hyper-V
  • PowerShell
  • Linux
  • Home
  • About

Windows OS Hub

  • Windows
    • Windows 11
    • Windows Server 2022
    • Windows 10
    • Windows Server 2019
    • Windows Server 2016
  • Microsoft
    • Active Directory (AD DS)
    • Group Policies (GPOs)
    • Exchange Server
    • Azure and Microsoft 365
    • Microsoft Office
  • Virtualization
    • VMware
    • Hyper-V
  • PowerShell
  • Linux

 Windows OS Hub / Azure and Microsoft 365 / How to Send a Message to Teams Channel with PowerShell

March 13, 2024

How to Send a Message to Teams Channel with PowerShell

You can send messages to Teams channels from PowerShell using webhook or Microsoft Graph API calls. Let’s see how to send and read messages in Microsoft Teams channels using PowerShell. You can use these PS scripts in various monitoring or notification scenarios where you need to send a notification not via email (Send-MailMessage cmdlet), but directly to a Teams channel.

Contents:
  • Send Messages to Microsoft Teams Using WebHook
  • How to Send or Read a Teams Message with Microsoft Graph API?

Send Messages to Microsoft Teams Using WebHook

You can send messages to a Microsoft Teams channel using the built-in WebHook connectors. A webhook connector is a URL address you can send a JSON object using an HTTP POST request.

  1. Create a channel in Teams. You can do it using the Microsoft Teams PowerShell module. For example: Get-team -DisplayName sysops| New-TeamChannel -DisplayName "AdminAlerts" -MembershipType Private
  2. Then open the Teams client (a desktop or web version) and select Connectors in the context menu of the channel; add connector in microsoft teams client
  3. Add the Incoming Webhook type of connector;teams - adding webhook connector
  4. Specify the connector name;
  5. Copy the URL of the connector that Azure created for you.

copy webhook connector url

To send a simple message to the channel using this URL, run the following PowerShell commands:

$myTeamsWebHook = “https://woshub.webhook.office.com/webhookb2/123456-12312-@aaaaa-bbbb-cccc/IncomingWebhook/xxxxxxxxxxxxxxxxxxxxx/xxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxxxxxxxxxx/xxxxx-xxxx-xxxx-xxxx”
Invoke-RestMethod -Method post -ContentType 'Application/Json' -Body '{"text":"Test Teams!"}' -Uri $myTeamsWebHook

Make sure that your message appeared in the Teams channel. The connector you have created is displayed as the author of the message.

send message to teams channel with powershell and webhook

MS Teams allows you to send no more than 4 messages per second.

You can add other data to your Teams notification, change font, color, and add extra information from your PowerShell script.

For example, the following script monitors the user lockout events (Event 4740) on a domain controller with the PDC FSMO role and sends a notification to the Teams channel.

$LockedUser = Search-ADAccount -UsersOnly –LockedOut | Get-ADUser –Properties lockoutTime, emailaddress | Select-Object emailaddress, @{n='lockoutTime';e={[DateTime]::FromFileTime($_.lockoutTime)}} | Sort-Object LockoutTime -Descending | Select-Object -first 1
$myTeamsWebHook  = "YOUR-WEBHOOK-URL"
$webhookMessage = [PSCustomObject][Ordered]@{
"@type"      = "FF0000"
"@context"   = "http://schema.org/extensions"
"summary"    = "Locked User: $($LockedUser.SamAccountName) "
"themeColor" = '700015'
"title"      = "User Lockout Event"
"text" = "`n
SamAccountName: $($LockedUser.SamAccountName)
Mail: $($LockedUser.EmailAddress)
Timestamp: $($LockedUser.LockoutTime.ToString()) "
}
$webhookJSON = convertto-json $webhookMessage -Depth 50
$webhookCall = @{
"URI"         = $myTeamsWebHook
"Method"      = 'POST'
"Body"        = $webhookJSON
"ContentType" = 'application/json'
}
Invoke-RestMethod @webhookCall

Then the event appears in the Teams channel and an administrator can react to it. send rich text message to teams with powershell

You may bind the script to EventID 4740 in Event Viewer (you can attach a task to an event). Or you can create a job in the Task Scheduler and run the PowerShell script regularly.

How to Send or Read a Teams Message with Microsoft Graph API?

Using Microsoft Graph API, you can both send and read messages in the Teams channel. First, you have to register the Azure app, set permissions (Group.Read.All, ChannelMessage.Send, Chat.ReadWrite, and ChatMessage.Send), and get an authentication token (learn more in the article How to Connect Azure Microsoft Graph API using PowerShell).

$ApplicationID = "4434ad23-b212-3212-3aad-54321de3bbc"
$TenatDomainName = "26216542-aaaa-bbbb-2212-65566aa6c32"
$AccessSecret="12-32Bh654321d3-seLa23l33p.hhj33MM21aaf"
$Body = @{
Grant_Type = "client_credentials"
Scope = "https://graph.microsoft.com/.default"
client_Id = $ApplicationID
Client_Secret = $AccessSecret
}
$ConnectGraph = Invoke-RestMethod -Uri https://login.microsoftonline.com/$TenatDomainName/oauth2/v2.0/token -Method POST -Body $Body
$token = $ConnectGraph.access_token
$URLchatmessage="https://graph.microsoft.com/v1.0/teams/$TeamID/channels/$ChannelID/messages"
$BodyJsonTeam = @"
{
"body": {
"content": "Hello World"
}
}
"@
Invoke-RestMethod -Method POST -Uri $URLchatmessage -Body $BodyJsonTeam -Headers -Headers @{Authorization = "Bearer $($token)"}

You can get $TeamID and $ChannelID using Get-Team and Get-TeamChannel from the MicrosoftTeams module.

In the same way, you can read messages from a Teams chat using the GET method.

1 comment
4
Facebook Twitter Google + Pinterest
Azure and Microsoft 365PowerShell
previous post
Uninstalling Programs with PowerShell in Windows 10/11
next post
Fix: Signature Button Not Working in Outlook 2019/2016/365

Related Reading

How to Block Sender Domain or Email Address...

March 17, 2024

Outlook Keeps Asking for Password on Windows

March 17, 2024

Get a List of Mailboxes a User Has...

March 15, 2024

Checking User Sign-in Logs in Entra ID (Microsoft...

March 15, 2024

How to Manually Configure Exchange or Microsoft 365...

March 17, 2024

Configuring Password Policy in Microsoft Entra ID

March 17, 2024

Fix: Microsoft Outlook Search Not Working on Windows...

March 17, 2024

Configuring UserPrincipalName and UPN Suffixes in Active Directory

March 11, 2024

1 comment

Janek October 10, 2022 - 1:09 pm

Gr8 post! im work on this sin a week, i can add field “add a comment” , “set du date” from powershell – could u teach us how to respodn to webhook?

Reply

Leave a Comment Cancel Reply

join us telegram channel https://t.me/woshub
Join WindowsHub Telegram channel to get the latest updates!

Recent Posts

  • Map a Network Drive over SSH (SSHFS) in Windows

    May 13, 2025
  • Configure NTP Time Source for Active Directory Domain

    May 6, 2025
  • Cannot Install Network Adapter Drivers on Windows Server

    April 29, 2025
  • Change BIOS from Legacy to UEFI without Reinstalling Windows

    April 21, 2025
  • How to Prefer IPv4 over IPv6 in Windows Networks

    April 9, 2025
  • Load Drivers from WinPE or Recovery CMD

    March 26, 2025
  • How to Block Common (Weak) Passwords in Active Directory

    March 25, 2025
  • Fix: The referenced assembly could not be found error (0x80073701) on Windows

    March 17, 2025
  • Exclude a Specific User or Computer from Group Policy

    March 12, 2025
  • AD Domain Join: Computer Account Re-use Blocked

    March 11, 2025

Follow us

  • Facebook
  • Twitter
  • Telegram
Popular Posts
  • Outlook Keeps Asking for Password on Windows
  • Checking User Sign-in Logs in Entra ID (Microsoft 365)
  • How to Manually Configure Exchange or Microsoft 365 Account in Outlook 365/2019/2016
  • Search and Delete Emails from User Mailboxes on Exchange Server (Microsoft 365) with PowerShell
  • Fix: Microsoft Outlook Search Not Working on Windows 10/11
  • Blank Sign-in Screen in Office 365 Apps (Outlook, Teams, etc.)
  • Removing Built-in Teams Chat in Windows 11
Footer Logo

@2014 - 2024 - Windows OS Hub. All about operating systems for sysadmins


Back To Top