Come esportare la cronologia chat di MS Teams con PowerShell

Admin

In questo articolo vedremo come accedere ed esportare la cronologia delle conversazioni chat di Microsoft Teams utilizzando PowerShell.

Le chat dei team vengono archiviate in un file nascosto Cronologia conversazioni\Chat del team cartella in a casella di posta condivisa, che viene creato automaticamente quando crei un nuovo gruppo Microsoft 365 (questo creerà immediatamente un gruppo Teams, un sito Web, una libreria di SharePoint Online, un gruppo Yammer, ecc.).

Puoi impedire agli utenti del tenant Microsoft 365 di creare nuovi gruppi Teams.

Tuttavia, non puoi accedere alla cartella protetta con una cronologia chat di Teams utilizzando Outlook o un'altra app. Puoi esportare il contenuto di una casella di posta di Exchange Online in un file PST utilizzando Ricerca contenutinel Centro sicurezza e conformità, quindi connettere il file PST in Outlook. Ma non è troppo conveniente. È molto più semplice utilizzare PowerShell per ottenere un elenco di messaggi di chat di Teams.

Per connetterci a un tenant Microsoft 365, utilizzeremo l'API Microsoft Graph.

In precedenza, ti abbiamo mostrato come farlo invia un messaggio a una chat di MS Teams utilizzando PowerShell e l'API Microsoft Graph.
  1. Creane uno nuovo appTeamsView app nel portale Azure (Azure AD -> Registrazione app -> Nuova registrazione);
  2. Copia i seguenti valori:
    ID dell'applicazione (cliente): your_app_ID
    ID directory (tenant): your_tenant_ID
  3. Vai ad Autorizzazioni API, fai clic su Microsoft Graph -> Autorizzazioni applicazione -> Canale -> seleziona Canale. Di base. Leggi tutto E CanaleMessaggio. Leggere.Tutto. Aggiungi il gruppo di autorizzazione -> Gruppo. Leggere. Tutto. Concedere le stesse autorizzazioni in Microsoft Graph -> Autorizzazioni delegate e anche in Direttorio. AccessAsUser. Tutto.
  4. Clic Concedi il consenso dell'amministratore per…Concedere le autorizzazioni all'app in Azure
  5. Quindi crea un segreto per accedere all'app. Vai a Certificati e segreti -> Nuovi segreti del cliente, specificare il nome della chiave e il relativo periodo di validità.
    Copia il valore da Valore campo:
    Valore: your_secret
Crea segreto per l'app Azure
Impara di più riguardo come connettere l'API Microsoft Graph con PowerShell.

Quindi puoi connetterti a Microsoft Entra ID (Azure AD) da PowerShell e ottenere un token di accesso.

$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. 
Puoi usare autenticazione basata su certificato in Microsoft 365 dallo script di PowerShell.

Ora puoi ottenere vari dati dal tuo tenant di Microsoft 365.

Elenca i team nel tuo tenant:

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

Quindi visualizza un elenco di canali nel gruppo Teams in base al relativo 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: elenca i canali in un team

Puoi utilizzare il seguente script di PowerShell per ottenere un elenco di messaggi e risposte dal canale 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. 

Questo script ottiene un elenco di conversazioni dal canale specificato, ottiene un elenco di risposte per ogni conversazione e genera un file HTML con il contenuto completo della chat. Le risposte alla discussione nella tabella contengono il campo chiave RE.

Controlla il nostro repository GitHub per questo codice di script: https://github.com/maxbakhub/winposh/blob/main/teams/export_messages_teams_chat.ps1

Esporta la chat di Microsoft Teams in HTML con PowerShell

Correzione: errore "Qualcosa è andato storto" durante l'installazione di Teams
Correzione: errore "Qualcosa è andato storto" durante l'installazione di Teams

Microsoft ha recentemente rilasciato una nuova versione basata su WebView2 di MS Teams per Window...

Invio di un'e-mail a un canale Microsoft Teams
Invio di un'e-mail a un canale Microsoft Teams

In alcuni casi, gli utenti potrebbero dover inviare o inoltrare un'e-mail da una posta in arrivo ...

Come disattivare l'avvio automatico di Microsoft Teams
Come disattivare l'avvio automatico di Microsoft Teams

Per impostazione predefinita, quando installi Office 365/Office 2019, vengono installate tutte le...