Hoe MS Teams-chatgeschiedenis te exporteren met PowerShell

Admin

In dit artikel bekijken we hoe u de geschiedenis van Microsoft Teams-chatgesprekken kunt openen en exporteren met PowerShell.

Teamchats worden opgeslagen in een verborgen Gespreksgeschiedenis\Team Chat map in een gedeelde mailbox, die automatisch wordt aangemaakt wanneer u een nieuwe Microsoft 365-groep maakt (hiermee wordt direct een Teams-groep, een website, een SharePoint Online-bibliotheek, een Yammer-groep, enz. gemaakt).

Jij kan voorkomen dat gebruikers van de Microsoft 365-tenant nieuwe Teams-groepen maken.

U hebt echter geen toegang tot de beveiligde map met een Teams-chatgeschiedenis via Outlook of een andere app. Jij kan exporteer de inhoud van een Exchange Online-mailbox naar een PST-bestand gebruik makend van Inhoud zoekenin de Security and Compliance Center en sluit vervolgens het PST-bestand aan in Outlook. Maar het is niet zo handig. Het is veel eenvoudiger om PowerShell te gebruiken om een ​​lijst met Teams-chatberichten te krijgen.

Om verbinding te maken met een Microsoft 365-tenant gebruiken we de Microsoft Graph API.

Eerder lieten we je zien hoe je dat moet doen stuur een bericht naar een MS Teams-chat met behulp van PowerShell en de Microsoft Graph-API.
  1. Maak een nieuwe appTeamsBekijk app in de Azure Portal (Azure AD -> App-registratie -> Nieuwe registratie);
  2. Kopieer de volgende waarden:
    Applicatie-(klant)-ID: your_app_ID
    Directory-ID (tenant): your_tenant_ID
  3. Ga naar API-machtigingen, klik op Microsoft Graph -> Applicatiemachtigingen -> Kanaal -> selecteren Kanaal. Basis. Alles lezen En Kanaalbericht. Lezen.Alle. Voeg de machtiging Groep -> toe Groep. Lezen. Alle. Verleen dezelfde machtigingen in Microsoft Graph -> Gedelegeerde machtigingen en ook in Directory. ToegangAlsGebruiker. Alle.
  4. Klik Verleen beheerderstoestemming voor…Verleen app-machtigingen in Azure
  5. Maak vervolgens een geheim aan om toegang te krijgen tot de app. Ga naar Certificaten & geheimen -> Nieuwe klantgeheimen, geef de sleutelnaam en de geldigheidsperiode op.
    Kopieer de waarde uit het Waarde veld:
    Waarde: your_secret
Maak een geheim voor de Azure-app
Leer meer over hoe u Microsoft Graph API verbindt met PowerShell.

Vervolgens kunt u vanuit PowerShell verbinding maken met Microsoft Entra ID (Azure AD) en een toegangstoken verkrijgen.

$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. 
Je kunt gebruiken certificaatgebaseerde authenticatie in Microsoft 365 vanuit uw PowerShell-script.

Nu kunt u verschillende gegevens van uw Microsoft 365-tenant ophalen.

Vermeld de teams in uw 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. 

Geef vervolgens een lijst met kanalen in de Teams-groep weer op basis van hun 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: Lijst van kanalen in een team

U kunt het volgende PowerShell-script gebruiken om een ​​lijst met berichten en antwoorden van het Teams-kanaal op te halen:

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

Dit script haalt een lijst met gesprekken op van het opgegeven kanaal, krijgt een lijst met antwoorden voor elk gesprek en genereert een HTML-bestand met de volledige inhoud van de chat. De antwoorden op de discussie in de tabel bevatten het sleutelveld RE.

Bekijk onze GitHub-repository voor deze scriptcode: https://github.com/maxbakhub/winposh/blob/main/teams/export_messages_teams_chat.ps1

Exporteer Microsoft Teams-chat naar html met PowerShell

Hoe u de aanwezigheidsstatus van Teams-gebruikers kunt opvragen en wijzigen met PowerShell
Hoe u de aanwezigheidsstatus van Teams-gebruikers kunt opvragen en wijzigen met PowerShell

Het kan nodig zijn om de aanwezigheidsstatus van de gebruiker (Online/Afwezig/Bezet) in Microsoft...

Hoe MS Teams-chatgeschiedenis te exporteren met PowerShell
Hoe MS Teams-chatgeschiedenis te exporteren met PowerShell

In dit artikel bekijken we hoe u de geschiedenis van Microsoft Teams-chatgesprekken kunt openen e...