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

Come inviare un messaggio al canale Teams con PowerShell
Come inviare un messaggio al canale Teams con PowerShell

Puoi inviare messaggi ai canali Teams da PowerShell usando webhook o chiamate API Microsoft Graph...

Gestione di Microsoft Teams con PowerShell
Gestione di Microsoft Teams con PowerShell

IL Team Microsoft Il modulo PowerShell è progettato per gestire i team dalla riga di comando. Puo...

Come eseguire query e modificare lo stato di presenza degli utenti di Teams con PowerShell
Come eseguire query e modificare lo stato di presenza degli utenti di Teams con PowerShell

Potrebbe essere necessario verificare lo stato di presenza dell'utente (Online/Non disponibile/Oc...