Как отправить сообщение на канал Teams с помощью PowerShell

Admin

Вы можете отправлять сообщения в каналы Teams из PowerShell с помощью веб-перехватчиков или вызовов API Microsoft Graph. Давайте посмотрим, как отправлять и читать сообщения в каналах Microsoft Teams с помощью PowerShell. Вы можете использовать эти сценарии PS в различных сценариях мониторинга или уведомлений, где вам нужно отправить уведомление не по электронной почте (Командлет Send-MailMessage), а непосредственно в канал Teams.

Содержание:

  • Отправка сообщений в Microsoft Teams с помощью WebHook
  • Как отправить или прочитать сообщение Teams с помощью Microsoft Graph API?

Отправка сообщений в Microsoft Teams с помощью WebHook

Вы можете отправлять сообщения в канал Microsoft Teams с помощью встроенных соединителей WebHook. Коннектор веб-перехватчика — это URL-адрес, по которому вы можете отправить объект JSON с помощью HTTP-запроса POST.

  1. Создайте канал в Teams. Ты можешь это сделать с помощью модуля Microsoft Teams PowerShell. Например: Get-team -DisplayName sysops| New-TeamChannel -DisplayName "AdminAlerts" -MembershipType Private
  2. Затем откройте клиент Teams (настольную или веб-версию) и выберите Соединители в контекстном меню канала; добавить коннектор в клиент Microsoft Teams
  3. Добавить Входящий веб-перехватчик тип разъема;команды — добавление коннектора веб-перехватчика
  4. Укажите имя коннектора;
  5. Скопируйте URL-адрес соединителя, созданного для вас Azure.
скопировать URL коннектора вебхука

Чтобы отправить простое сообщение на канал с использованием этого URL-адреса, выполните следующие команды PowerShell:

$myTeamsWebHook = “https://woshub.webhook.office.com/webhookb2/[email protected]/IncomingWebhook/xxxxxxxxxxxxxxxxxxxxx/xxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxxxxxxxxxx/xxxxx-xxxx-xxxx-xxxx”
Invoke-RestMethod -Method post -ContentType 'Application/Json' -Body '{"text":"Test Teams!"}' -Uri $myTeamsWebHook

Убедитесь, что ваше сообщение появилось в канале Teams. Созданный вами коннектор отображается как автор сообщения.

отправить сообщение на канал команд с помощью powershell и webhook

MS Teams позволяет отправлять не более 4 сообщений в секунду.

Вы можете добавить другие данные в уведомление Teams, изменить шрифт, цвет и добавить дополнительную информацию из сценария PowerShell.

Например, следующий скрипт отслеживает события блокировки пользователя (событие 4740) на контроллере домена с PDC Роль FSMO и отправляет уведомление в канал Teams.

$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

Затем событие появляется в канале Teams, и администратор может на него отреагировать. отправить форматированное текстовое сообщение командам с помощью powershell

Вы можете привязать скрипт к EventID 4740 в Event Viewer (к событию можно прикрепить задачу). Или вы можете создайте задание в планировщике заданий и регулярно запускайте скрипт PowerShell.

Как отправить или прочитать сообщение Teams с помощью Microsoft Graph API?

Используя Microsoft Graph API, вы можете отправлять и читать сообщения в канале Teams. Во-первых, вы должны зарегистрировать приложение Azure, установить разрешения (Group.Read.All, ChannelMessage.Send, Chat.ReadWrite, и ChatMessage.Send) и получить токен аутентификации (подробнее читайте в статье Как подключить Azure Microsoft Graph API с помощью 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)"}

Вы можете получить $TeamID и $ChannelID с использованием Get-Team и Get-TeamChannel из модуля MicrosoftTeams.

Точно так же вы можете читать сообщения из чата Teams, используя метод GET.

Как запросить и изменить статус присутствия пользователя Teams с помощью PowerShell
Как запросить и изменить статус присутствия пользователя Teams с помощью PowerShell

Может потребоваться проверить статус присутствия пользователя (в сети/отсутствует/занят) в Micros...

Как запросить и изменить статус присутствия пользователя Teams с помощью PowerShell
Как запросить и изменить статус присутствия пользователя Teams с помощью PowerShell

Может потребоваться проверить статус присутствия пользователя (в сети/отсутствует/занят) в Micros...

Как экспортировать историю чата MS Teams с помощью PowerShell
Как экспортировать историю чата MS Teams с помощью PowerShell

В этой статье мы рассмотрим, как получить доступ к истории разговоров в чате Microsoft Teams и эк...