В этой статье мы рассмотрим, как отправлять сообщения в каналы Teams из PowerShell с помощью вызовов webhook или Microsoft Graph API. С помощью PowerShell вы можете отправлять или читать сообщения в каналах Teams. Это можно использовать в различных сценариях мониторинга и оповещения о событиях определенных команд не через email сообщение ( командлет Send-MailMessage ), а напрямую в группу Teams.
Вы можете отправить сообщения в канал Microsoft Teams с помощью встроенных коннекторов WebHook. Такой коннектор представляет собой URI адрес, в который можно отправить объект JSON с помощью запроса HTTP POST.
Get-team -DisplayName sysops| New-TeamChannel -DisplayName “AdminAlerts” -MembershipType Private
Чтобы отправить простое сообщение в канал по этому URL, выполните такие команды PowerShell:
$myTeamsWebHook = “https://remontka.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
Убедитесь, то ваше сообщение появилось в канале Teams. В качестве автора сообщения указывается созданный вами коннектор.
Вы можете добавить дополнительные данные в уведомление Teams, изменить шрифт, цвет, добавить дополнительную информацию из вашего скрипта PowerShell.
Например, следующий скрипт отслеживает появление события блокировки пользователя (EventID 4740) на контроллере домена с FSMO ролью PDC и отправляет уведомление в канал 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 и на него может отреагировать администратор.
С помощью Microsoft Graph API вы можете не только отправлять, но и читать сообщения из канала Teams. Для этого вам нужно зарегистрировать приложение Azure, настроить разрешения (Group.Read.All, ChannelMessage.Send, Chat.ReadWrite и ChatMessage.Send) и получить токен аутентификации (подробнее об этом в статье Доступ к Azure через Microsoft Graph API с помощью PowerShell ).
$ApplicationID = "46692ad-f8a0-123f-8cca-432102de3bcf"
$TenatDomainName = "26216542-465a-407e-a17d-2bb4c3e3313b"
$AccessSecret = "d-8jM3ZUG87du-syZd32k01q.gkssa3mH3v"
$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)»}
Get-Team
и Get-TeamChannel
из модуля MicrosoftTeams. По аналогии с помощью метода GET можно читать сообщения из чата Teams.
Если говорить о том, какие лучшие дистрибутивы Linux мы знаем, то этот список может быть…
Хотя Ubuntu и поставляется со встроенным обозревателем Firefox многие пользователи считают что это не самая…
Что такое Remmina? Remmina — это совершенно бесплатный и свободный клиент так называемого удаленного рабочего…
Как мы знаем, Ubuntu это самая популярная сборка из систем на базе ядра Linux. У…
Выбор ноутбука для каждого пользователя это довольно кропотливый процесс. Люди стараются подобрать ноутбук который будет…
Если вы решили ознакомиться с операционной системой Linux более детально и задались вопросом как установить…