Hur man exporterar MS Teams chatthistorik med PowerShell

Admin

I den här artikeln kommer vi att titta på hur du kommer åt och exporterar historiken för Microsoft Teams chattkonversationer med PowerShell.

Lagchattar lagras i en dold Konversationshistorik\Teamchatt mapp i en delad brevlåda, som skapas automatiskt när du skapar en ny Microsoft 365-grupp (detta skapar omedelbart en Teams-grupp, en webbplats, ett SharePoint Online-bibliotek, en Yammer-grupp, etc.).

Du kan förhindra användare av Microsoft 365-hyresgästen från att skapa nya Teams-grupper.

Du kan dock inte komma åt den skyddade mappen med en Teams chatthistorik med Outlook eller en annan app. Du kan exportera innehållet i en Exchange Online-postlåda till en PST-fil använder sig av Innehållssökningi Säkerhets- och efterlevnadscenter och anslut sedan PST-filen i Outlook. Men det är inte alltför bekvämt. Det är mycket enklare att använda PowerShell för att få en lista över Teams chattmeddelanden.

För att ansluta till en Microsoft 365-hyresgäst använder vi Microsoft Graph API.

Tidigare har vi visat dig hur du gör
skicka ett meddelande till en MS Teams-chatt med PowerShell och Microsoft Graph API.
  1. Skapa en ny appTeamsView app i Azure Portal (Azure AD -> Appregistrering -> Ny registrering);
  2. Kopiera följande värden:
    Applikations-ID (klient): your_app_ID
    Katalog (hyresgäst) ID: your_tenant_ID
  3. Gå till API-behörigheter, klicka på Microsoft Graph -> Applikationsbehörigheter -> Kanal -> välj Kanal. Grundläggande. Läs allt och ChannelMessage. Läsa.Allt. Lägg till behörighetsgruppen -> Grupp. Läsa. Allt. Ge samma behörigheter i Microsoft Graph -> Delegerade behörigheter och även i Katalog. AccessAsUser. Allt.
  4. Klick Ge administratörssamtycke för...Ge appbehörigheter i Azure
  5. Skapa sedan en hemlighet för att komma åt appen. Gå till Certifikat & hemligheter -> Nya klienthemligheter, ange nyckelnamnet och dess giltighetstid.
    Kopiera värdet från Värde fält:
    Värde: your_secret
Skapa hemlighet för Azure-appen
Lära sig mer om hur man ansluter Microsoft Graph API med PowerShell.

Sedan kan du ansluta till Microsoft Entra ID (Azure AD) från PowerShell och få en åtkomsttoken.

$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. 
Du kan använda certifikatbaserad autentisering i Microsoft 365 från ditt PowerShell-skript.

Nu kan du få olika data från din Microsoft 365-hyresgäst.

Lista teamen i din hyresgäst:

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

Visa sedan en lista över kanaler i gruppen Teams efter dess 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: Lista kanaler i ett team

Du kan använda följande PowerShell-skript för att få en lista med meddelanden och svar från Teams-kanalen:

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

Det här skriptet får en lista över konversationer från den angivna kanalen, får en lista med svar för varje konversation och genererar en HTML-fil med hela innehållet i chatten. Svaren på diskussionen i tabellen innehåller nyckelfältet RE.

Kolla in vårt GitHub-förråd för denna skriptkod: https://github.com/maxbakhub/winposh/blob/main/teams/export_messages_teams_chat.ps1

Exportera Microsoft Teams-chatt till html med PowerShell

Fix: "Något gick fel" vid installation av team
Fix: "Något gick fel" vid installation av team

Microsoft släppte nyligen en ny WebView2-baserad version av MS Teams för Windows. Bytet från Elec...

Skicka ett e-postmeddelande till en Microsoft Teams-kanal
Skicka ett e-postmeddelande till en Microsoft Teams-kanal

I vissa fall kan användare behöva skicka eller vidarebefordra ett e-postmeddelande från en Outloo...

Hur man inaktiverar Microsoft Teams Auto Startup
Hur man inaktiverar Microsoft Teams Auto Startup

Som standard, när du installerar Office 365/Office 2019, installeras alla Microsoft Office-appar,...