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

Hur man frågar och ändrar Teams användarnärvarostatus med PowerShell
Hur man frågar och ändrar Teams användarnärvarostatus med PowerShell

Det kan vara nödvändigt att kontrollera användarens närvarostatus (Online/Borta/Upptagen) i Micro...

Hur man exporterar MS Teams chatthistorik med PowerShell
Hur man exporterar MS Teams chatthistorik med PowerShell

I den här artikeln kommer vi att titta på hur du kommer åt och exporterar historiken för Microsof...