Cum să exportați istoricul conversațiilor MS Teams cu PowerShell

Admin

În acest articol, vom analiza cum să accesăm și să exportăm istoricul conversațiilor prin chat Microsoft Teams folosind PowerShell.

Conversațiile echipelor sunt stocate într-un spațiu ascuns Istoricul conversațiilor\Team Chat dosar într-un căsuță poștală partajată, care este creat automat atunci când creați un nou grup Microsoft 365 (acest lucru va crea instantaneu un grup Teams, un site web, o bibliotecă SharePoint Online, un grup Yammer etc.).

Puteți împiedicați utilizatorii chiriașului Microsoft 365 să creeze noi grupuri Teams.

Cu toate acestea, nu puteți accesa folderul protejat cu un istoric de chat Teams folosind Outlook sau o altă aplicație. Puteți exportați conținutul unei căsuțe poștale Exchange Online într-un fișier PST folosind Căutare de conținutîn Centrul de securitate și conformitate și apoi conectați fișierul PST în Outlook. Dar nu este prea convenabil. Este mult mai ușor să utilizați PowerShell pentru a obține o listă de mesaje de chat Teams.

Pentru a vă conecta la un chiriaș Microsoft 365, vom folosi API-ul Microsoft Graph.

Anterior, ți-am arătat cum trimiteți un mesaj la un chat MS Teams folosind PowerShell și API-ul Microsoft Graph.
  1. Creaza un nou appTeamsView aplicație în Portalul Azure (Azure AD -> Înregistrare aplicație -> Înregistrare nouă);
  2. Copiați următoarele valori:
    ID aplicație (client): your_app_ID
    ID director (chiriaș): your_tenant_ID
  3. Accesați Permisiuni API, faceți clic pe Microsoft Graph -> Permisiuni aplicație -> Canal -> selectați Canal. De bază. Citeste tot și ChannelMessage. Citit.Toate. Adăugați permisiunea Group -> Grup. Citit. Toate. Acordați aceleași permisiuni în Microsoft Graph -> Permisiuni delegate și, de asemenea, în Director. AccessAsUser. Toate.
  4. Clic Acordați consimțământul administratorului pentru...Acordați permisiuni aplicației în Azure
  5. Apoi creați un secret pentru a accesa aplicația. Mergi la Certificate și secrete -> Secretele noilor clienți, specificați numele cheii și perioada de valabilitate a acesteia.
    Copiați valoarea din Valoare camp:
    Valoare: your_secret
Creați secret pentru aplicația Azure
Află mai multe despre cum să conectați Microsoft Graph API la PowerShell.

Apoi vă puteți conecta la Microsoft Entra ID (Azure AD) din PowerShell și puteți obține un token de acces.

$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. 
Poți să folosești autentificare bazată pe certificat în Microsoft 365 din scriptul dvs. PowerShell.

Acum puteți obține diverse date de la chiriașul Microsoft 365.

Listați echipele din chiriașul dvs.:

#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. 

Apoi afișați o listă de canale din grupul Teams după ID-ul său:

# 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
PowerShell: listează canalele dintr-o echipă

Puteți utiliza următorul script PowerShell pentru a obține o listă de mesaje și răspunsuri de la canalul Teams:

$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. 

Acest script primește o listă de conversații de la canalul specificat, primește o listă de răspunsuri pentru fiecare conversație și generează un fișier HTML cu conținutul complet al chatului. Răspunsurile la discuția din tabel conțin câmpul cheie RE.

Consultați depozitul nostru GitHub pentru acest cod de script: https://github.com/maxbakhub/winposh/blob/main/teams/export_messages_teams_chat.ps1

Exportați chatul Microsoft Teams în html cu PowerShell

Cum să exportați istoricul conversațiilor MS Teams cu PowerShell
Cum să exportați istoricul conversațiilor MS Teams cu PowerShell

În acest articol, vom analiza cum să accesăm și să exportăm istoricul conversațiilor prin chat Mi...