Como exportar o histórico de bate-papo do MS Teams com PowerShell

Admin

Neste artigo, veremos como acessar e exportar o histórico de conversas de bate-papo do Microsoft Teams usando o PowerShell.

Os bate-papos das equipes são armazenados em um local oculto Histórico de conversas\Bate-papo em equipe pasta em um caixa de correio compartilhada, que é criado automaticamente quando você cria um novo grupo do Microsoft 365 (isso criará instantaneamente um grupo do Teams, um site, uma biblioteca do SharePoint Online, um grupo do Yammer, etc.).

Você pode impedir que os usuários do locatário do Microsoft 365 criem novos grupos do Teams.

No entanto, você não pode acessar a pasta protegida com um histórico de bate-papo do Teams usando o Outlook ou outro aplicativo. Você pode exportar o conteúdo de uma caixa de correio do Exchange Online para um arquivo PST usando Pesquisa de conteúdono Security and Compliance Center e conecte o arquivo PST no Outlook. Mas não é muito conveniente. É muito mais fácil usar o PowerShell para obter uma lista de mensagens de bate-papo do Teams.

Para se conectar a um locatário do Microsoft 365, usaremos a API do Microsoft Graph.

Anteriormente, mostramos como envie uma mensagem para um bate-papo do MS Teams usando PowerShell e a API do Microsoft Graph.
  1. Crie um novo appTeamsView app no ​​Portal do Azure (Azure AD -> Registro do aplicativo -> Novo registro);
  2. Copie os seguintes valores:
    ID do aplicativo (cliente): your_app_ID
    ID do diretório (locatário): your_tenant_ID
  3. Vá para Permissões de API, clique em Microsoft Graph -> Permissões de aplicativo -> Canal -> selecione Canal. Básico. Leia tudo e Mensagem do canal. Ler.Todos. Adicione o grupo de permissão -> Grupo. Ler. Todos. Conceda as mesmas permissões em Microsoft Graph -> Permissões delegadas e também em Diretório. AccessAsUser. Todos.
  4. Clique Conceda consentimento de administrador para…Conceder permissões de aplicativo no Azure
  5. Em seguida, crie um segredo para acessar o aplicativo. Vá para Certificados e segredos -> Novos segredos do cliente, especifique o nome da chave e seu período de validade.
    Copie o valor do Valor campo:
    Valor: your_secret
Criar segredo para o aplicativo Azure
Aprender mais sobre como conectar a API do Microsoft Graph ao PowerShell.

Em seguida, você pode conectar-se ao Microsoft Entra ID (Azure AD) do PowerShell e obter um token de acesso.

$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. 
Você pode usar autenticação baseada em certificado no Microsoft 365 do seu script do PowerShell.

Agora você pode obter vários dados do seu locatário do Microsoft 365.

Liste as equipes em seu locatário:

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

Em seguida, exiba uma lista de canais no grupo Teams por seu 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: listar canais em uma equipe

Você pode usar o seguinte script do PowerShell para obter uma lista de mensagens e respostas do 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. 

Este script obtém uma lista de conversas do canal especificado, obtém uma lista de respostas para cada conversa e gera um arquivo HTML com o conteúdo completo do chat. As respostas à discussão na tabela contêm o campo-chave RE.

Confira nosso repositório GitHub para este código de script: https://github.com/maxbakhub/winposh/blob/main/teams/export_messages_teams_chat.ps1

Exporte o bate-papo do Microsoft Teams para HTML com PowerShell

Gerenciando Microsoft Teams com PowerShell
Gerenciando Microsoft Teams com PowerShell

O Microsoft Teams O módulo PowerShell foi projetado para gerenciar o Teams a partir da linha de c...

Como consultar e alterar o status de presença do usuário do Teams com PowerShell
Como consultar e alterar o status de presença do usuário do Teams com PowerShell

Pode ser necessário verificar o status de presença do usuário (Online/Ausente/Ocupado) no Microso...

Como consultar e alterar o status de presença do usuário do Teams com PowerShell
Como consultar e alterar o status de presença do usuário do Teams com PowerShell

Pode ser necessário verificar o status de presença do usuário (Online/Ausente/Ocupado) no Microso...