Kako poslati sporočilo kanalu Teams s PowerShell

Admin

Sporočila lahko pošiljate kanalom Teams iz lupine PowerShell z uporabo klicev webhook ali Microsoft Graph API. Oglejmo si, kako pošiljati in brati sporočila v kanalih Microsoft Teams z lupino PowerShell. Te skripte PS lahko uporabite v različnih scenarijih spremljanja ali obveščanja, kjer morate poslati obvestilo ne po e-pošti (Cmdlet Send-MailMessage), ampak neposredno na kanal Teams.

Vsebina:

  • Pošljite sporočila Microsoft Teams z uporabo WebHook
  • Kako poslati ali prebrati sporočilo Teams z API-jem Microsoft Graph?

Pošljite sporočila Microsoft Teams z uporabo WebHook

Sporočila lahko pošiljate v kanal Microsoft Teams z uporabo vgrajenih konektorjev WebHook. Konektor webhook je naslov URL, ki mu lahko pošljete objekt JSON z zahtevo HTTP POST.

  1. Ustvarite kanal v aplikaciji Teams. Lahko to storite z uporabo modula Microsoft Teams PowerShell. Na primer: Get-team -DisplayName sysops| New-TeamChannel -DisplayName "AdminAlerts" -MembershipType Private
  2. Nato odprite odjemalca Teams (namizno ali spletno različico) in izberite Konektorji v kontekstnem meniju kanala; dodajte konektor v odjemalca Microsoft Teams
  3. Dodajte Dohodni Webhook vrsta konektorja;teams – dodajanje konektorja webhook
  4. Določite ime konektorja;
  5. Kopirajte URL konektorja, ki ga je Azure ustvaril za vas.
kopiraj URL konektorja webhook

Če želite poslati preprosto sporočilo kanalu s tem URL-jem, zaženite naslednje ukaze 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

Prepričajte se, da se je vaše sporočilo pojavilo v kanalu Teams. Povezovalnik, ki ste ga ustvarili, je prikazan kot avtor sporočila.

pošljite sporočilo kanalu timov s PowerShell in Webhook

MS Teams vam omogoča pošiljanje največ 4 sporočil na sekundo.

V svoje obvestilo Teams lahko dodate druge podatke, spremenite pisavo, barvo in dodate dodatne informacije iz skripta PowerShell.

Na primer, naslednji skript nadzoruje dogodki zaklepanja uporabnika (dogodek 4740) na krmilniku domene s PDC vloga FSMO in pošlje obvestilo kanalu 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

Nato se dogodek prikaže v kanalu Teams in skrbnik se lahko nanj odzove. pošlji obogateno besedilno sporočilo ekipam s PowerShell

Skript lahko povežete z EventID 4740 v pregledovalniku dogodkov (dogodku lahko priložite nalogo). Ali pa lahko ustvarite opravilo v razporejevalniku opravil in redno izvajajte skript PowerShell.

Kako poslati ali prebrati sporočilo Teams z API-jem Microsoft Graph?

Z API-jem Microsoft Graph lahko pošiljate in berete sporočila v kanalu Teams. Najprej morate registrirati aplikacijo Azure, nastaviti dovoljenja (Group.Read.All, ChannelMessage.Send, Chat.ReadWrite, in ChatMessage.Send) in pridobite žeton za preverjanje pristnosti (več o tem v članku Kako povezati Azure Microsoft Graph API z lupino 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)"}

Lahko dobiš $TeamID in $ChannelID uporabo Get-Team in Get-TeamChannel iz modula MicrosoftTeams.

Na enak način lahko berete sporočila iz klepeta Teams z metodo GET.

Kako poizvedovati in spremeniti stanje prisotnosti uporabnikov Teams s PowerShell
Kako poizvedovati in spremeniti stanje prisotnosti uporabnikov Teams s PowerShell

Preden izvedete določeno dejanje za nekatere integracijske skripte, bo morda treba preveriti stan...

Kako poizvedovati in spremeniti stanje prisotnosti uporabnikov Teams s PowerShell
Kako poizvedovati in spremeniti stanje prisotnosti uporabnikov Teams s PowerShell

Preden izvedete določeno dejanje za nekatere integracijske skripte, bo morda treba preveriti stan...

Kako izvoziti zgodovino klepetov MS Teams s PowerShell
Kako izvoziti zgodovino klepetov MS Teams s PowerShell

V tem članku si bomo ogledali, kako dostopati in izvoziti zgodovino pogovorov v klepetu Microsoft...