Šiame straipsnyje apžvelgsime, kaip pasiekti ir eksportuoti „Microsoft Teams“ pokalbių pokalbių istoriją naudojant „PowerShell“.
Komandų pokalbiai saugomi paslėptoje vietoje Pokalbių istorija\Komandos pokalbis aplankas a bendrinamą pašto dėžutę, kuri automatiškai sukuriama, kai sukuriate naują „Microsoft 365“ grupę (tai akimirksniu sukurs „Teams“ grupę, svetainę, „SharePoint Online“ biblioteką, „Yammer“ grupę ir kt.).
Tačiau negalite pasiekti apsaugoto aplanko su Teams pokalbių istorija naudodami „Outlook“ ar kitą programą. Tu gali eksportuoti Exchange Online pašto dėžutės turinį į PST failą naudojant Turinio paieškaviduje Saugos ir atitikties centras, tada prijunkite PST failą programoje „Outlook“. Bet tai nėra labai patogu. Daug lengviau naudoti „PowerShell“, kad gautumėte „Teams“ pokalbių pranešimų sąrašą.
Norėdami prisijungti prie „Microsoft 365“ nuomininko, naudosime „Microsoft Graph“ API.
- Sukurti naują appTeamsView programa Azure portale (Azure AD -> Programos registracija -> Nauja registracija);
- Nukopijuokite šias reikšmes:
Programos (kliento) ID:your_app_ID
Katalogo (nuomininko) ID:your_tenant_ID
- Eikite į API leidimus, spustelėkite Microsoft Graph -> Programos leidimai -> Kanalas -> pasirinkite Kanalas. Pagrindinis. Skaityti viską ir ChannelMessage. Skaityti.Visi. Pridėkite leidimų grupę -> Grupė. Skaityti. Visi. Suteikite tuos pačius leidimus Microsoft Graph -> Deleguoti leidimai ir taip pat Katalogas. AccessAsUser. Visi.
- Spustelėkite Suteikti administratoriaus sutikimą…
- Tada sukurkite paslaptį, kad galėtumėte pasiekti programą. Eiti į Sertifikatai ir paslaptys -> Naujos kliento paslaptys, nurodykite rakto pavadinimą ir jo galiojimo laikotarpį.
Nukopijuokite vertę iš Vertė laukas:
Vertė:your_secret
Tada galite prisijungti prie Microsoft Entra ID (Azure AD) iš PowerShell ir gauti prieigos raktą.
$clientId = "your_app_ID"
$tenantName = "yourtenant.onmicrosoft.com"
$clientSecret = "your_secret"
$resource = "https://graph.microsoft.com/"
$Username = "[email protected]"
$Password = "yourpassword"
$ReqTokenBody = @{ Grant_Type = "Password" client_Id = $clientID Client_Secret = $clientSecret Username = $Username Password = $Password Scope = "https://graph.microsoft.com/.default"
}
$TokenResponse = Invoke-RestMethod -Uri "https://login.microsoftonline.com/$TenantName/oauth2/v2.0/token" -Method POST -Body $ReqTokenBody.
Dabar galite gauti įvairių duomenų iš savo „Microsoft 365“ nuomininko.
Išvardykite savo nuomininko komandas:
#Getting all Teams. $header= @{Authorization = "Bearer $($TokenResponse.access_token)"} $BaseURI = "https://graph.microsoft.com/beta" $AllMicrosoftTeams = (Invoke-RestMethod -Uri "$($BaseURI)/groups?'$filter=resourceProvisioningOptions/Any(x: x eq 'Team')" -Headers $header -Method Get -ContentType "application/json").value. $AllMicrosoftTeams| FT id, DisplayName, Description.
Tada rodykite kanalų sąrašą Teams grupėje pagal jo ID:
# List channels in Team. $TeamsID="your_team_id" $TeamsChannels = (Invoke-RestMethod -Uri "$($BaseURI)/teams/$($TeamsID)/channels" -Headers $Header -Method Get -ContentType "application/json").value. $TeamsChannels | FT id, DisplayName, Description
Galite naudoti šį PowerShell scenarijų, kad gautumėte pranešimų ir atsakymų sąrašą iš Teams kanalo:
$ChannelID="your_chat_id " $Header =@{Authorization = "Bearer $($Tokenresponse.access_token)"} $apiUrl = "https://graph.microsoft.com/beta/teams/$TeamsID/channels/$ChannelID/messages" $Data = Invoke-RestMethod -Uri $apiUrl -Headers $header -Method Get. $Messages = ($Data | Select-Object Value).Value. class messageData. { [string]$dateTime [string]$from [string]$body [string]$re messageData() { $this.dateTime = "" $this.from = "" $this.body = "" $this.re = "" } } $messageSet = New-Object System.Collections.ArrayList; foreach ($message in $Messages) { $result = New-object messageData $result.DateTime=Get-Date -Date (($message).createdDateTime) -Format 'yyyy/MM/dd HH: mm' $result.from = $message.from.user.displayName $result.body = $message.body.content $messageSet.Add($result) #parsing replies $repliesURI = "https://graph.microsoft.com/beta/teams/" + $TeamsID + "/channels/" + $ChannelID + "/messages/" + $message.ID + "/replies?`$top100" $repliesResponse = Invoke-RestMethod -Method Get -Uri $repliesURI -Headers $header foreach ($reply in $repliesResponse.value) { $replyData = New-Object messageData $replyData.dateTime = Get-Date -Date (($reply).createdDateTime) -Format 'yyyy/MM/dd HH: mm' $replyData.from = $reply.from.user.displayName $replyData.body= $reply.body.content $replyData.re="RE" $messageSet.Add($replyData) } } $messageSet|ConvertTo-Html | Out-File c:\ps\teams_chat_history.html -Encoding utf8.
Šis scenarijus gauna pokalbių sąrašą iš nurodyto kanalo, atsakymų į kiekvieną pokalbį sąrašą ir sugeneruoja HTML failą su visu pokalbio turiniu. Lentelės atsakymuose į diskusiją yra rakto laukas RE
.
Peržiūrėkite mūsų „GitHub“ saugyklą šio scenarijaus kodo: https://github.com/maxbakhub/winposh/blob/main/teams/export_messages_teams_chat.ps1