Comment exporter l'historique des discussions MS Teams avec PowerShell

Admin

Dans cet article, nous verrons comment accéder et exporter l'historique des conversations de chat Microsoft Teams à l'aide de PowerShell.

Les discussions des équipes sont stockées dans un emplacement caché Historique des conversations\Chat en équipe dossier dans un boîte aux lettres partagée, qui est automatiquement créé lorsque vous créez un nouveau groupe Microsoft 365 (cela créera instantanément un groupe Teams, un site Web, une bibliothèque SharePoint Online, un groupe Yammer, etc.).

Tu peux empêcher les utilisateurs du locataire Microsoft 365 de créer de nouveaux groupes Teams.

Cependant, vous ne pouvez pas accéder au dossier protégé avec un historique de discussion Teams à l'aide d'Outlook ou d'une autre application. Tu peux exporter le contenu d'une boîte aux lettres Exchange Online vers un fichier PST en utilisant Recherche de contenudans le Centre de sécurité et de conformité, puis connectez le fichier PST dans Outlook. Mais ce n’est pas très pratique. Il est beaucoup plus facile d’utiliser PowerShell pour obtenir une liste des messages de discussion Teams.

Pour nous connecter à un locataire Microsoft 365, nous utiliserons l'API Microsoft Graph.

Précédemment, nous vous avons montré comment envoyer un message à une discussion MS Teams à l'aide de PowerShell et l'API Microsoft Graph.
  1. Créer un nouveau appTeamsView application dans le portail Azure (Azure AD -> Inscription de l'application -> Nouvelle inscription) ;
  2. Copiez les valeurs suivantes :
    ID d'application (client): your_app_ID
    ID d'annuaire (locataire): your_tenant_ID
  3. Accédez à Autorisations API, cliquez sur Microsoft Graph -> Autorisations d'application -> Canal -> sélectionnez Canal. Basique. Lis tout et Message de canal. Lire.Tous. Ajouter le groupe d'autorisations -> Groupe. Lire. Tous. Accordez les mêmes autorisations dans Microsoft Graph -> Autorisations déléguées et également dans Annuaire. AccèsEn tant qu'utilisateur. Tous.
  4. Cliquez sur Accorder le consentement de l’administrateur pour…Accorder des autorisations d’application dans Azure
  5. Créez ensuite un secret pour accéder à l'application. Aller à Certificats et secrets -> Nouveaux secrets clients, précisez le nom de la clé et sa période de validité.
    Copiez la valeur du Valeur champ:
    Valeur: your_secret
Créer un secret pour l'application Azure
En savoir plus sur comment connecter l'API Microsoft Graph avec PowerShell.

Vous pouvez ensuite vous connecter à Microsoft Entra ID (Azure AD) à partir de PowerShell et obtenir un jeton d'accès.

$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. 
Vous pouvez utiliser authentification basée sur un certificat dans Microsoft 365 à partir de votre script PowerShell.

Vous pouvez désormais obtenir diverses données de votre locataire Microsoft 365.

Répertoriez les équipes dans votre locataire :

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

Affichez ensuite une liste des chaînes du groupe Teams par leur 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
PowerShell: répertorier les canaux dans une équipe

Vous pouvez utiliser le script PowerShell suivant pour obtenir une liste des messages et des réponses du canal 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. 

Ce script obtient une liste des conversations du canal spécifié, une liste des réponses pour chaque conversation et génère un fichier HTML avec le contenu complet de la discussion. Les réponses à la discussion dans le tableau contiennent le champ clé RE.

Consultez notre référentiel GitHub pour ce code de script: https://github.com/maxbakhub/winposh/blob/main/teams/export_messages_teams_chat.ps1

Exportez le chat Microsoft Teams en HTML avec PowerShell

Comment interroger et modifier le statut de présence des utilisateurs des équipes avec PowerShell
Comment interroger et modifier le statut de présence des utilisateurs des équipes avec PowerShell

Il peut être nécessaire de vérifier l’état de présence de l’utilisateur (En ligne/Absent/Occupé) ...

Comment interroger et modifier le statut de présence des utilisateurs des équipes avec PowerShell
Comment interroger et modifier le statut de présence des utilisateurs des équipes avec PowerShell

Il peut être nécessaire de vérifier l’état de présence de l’utilisateur (En ligne/Absent/Occupé) ...

Comment exporter l'historique des discussions MS Teams avec PowerShell
Comment exporter l'historique des discussions MS Teams avec PowerShell

Dans cet article, nous verrons comment accéder et exporter l'historique des conversations de chat...