Sådan eksporteres MS Teams Chat-historik med PowerShell

Admin

I denne artikel vil vi se på, hvordan du får adgang til og eksporterer historikken for Microsoft Teams chatsamtaler ved hjælp af PowerShell.

Teams chats gemmes i en skjult Samtalehistorik\Teamchat mappe i en fælles postkasse, som oprettes automatisk, når du opretter en ny Microsoft 365-gruppe (dette vil øjeblikkeligt oprette en Teams-gruppe, et websted, et SharePoint Online-bibliotek, en Yammer-gruppe osv.).

Du kan forhindre brugere af Microsoft 365-lejeren i at oprette nye Teams-grupper.

Du kan dog ikke få adgang til den beskyttede mappe med en Teams-chathistorik ved hjælp af Outlook eller en anden app. Du kan eksportere indholdet af en Exchange Online-postkasse til en PST-fil ved brug af Indholdssøgningi Sikkerheds- og overholdelsescenter, og tilslut derefter PST-filen i Outlook. Men det er ikke for bekvemt. Det er meget nemmere at bruge PowerShell til at få en liste over Teams chatbeskeder.

For at oprette forbindelse til en Microsoft 365-lejer bruger vi Microsoft Graph API.

Tidligere viste vi dig, hvordan du
send en besked til en MS Teams-chat ved hjælp af PowerShell og Microsoft Graph API.
  1. Opret en ny appTeamsView app i Azure Portal (Azure AD -> App registrering -> Ny registrering);
  2. Kopier følgende værdier:
    Applikations-ID (klient): your_app_ID
    Directory (lejer) ID: your_tenant_ID
  3. Gå til API-tilladelser, klik på Microsoft Graph -> Applikationstilladelser -> Kanal -> vælg Kanal. Grundlæggende. LæsAlle og ChannelMessage. Læs.Alle. Tilføj tilladelsesgruppen -> Gruppe. Læs. Alle. Giv de samme tilladelser i Microsoft Graph -> Delegerede tilladelser og også i Vejviser. AccessAsUser. Alle.
  4. Klik Giv administratorsamtykke til...Giv apptilladelser i Azure
  5. Opret derefter en hemmelighed for at få adgang til appen. Gå til Certifikater og hemmeligheder -> Nye klienthemmeligheder, angiv nøglenavnet og dens gyldighedsperiode.
    Kopier værdien fra Værdi Mark:
    Værdi: your_secret
Opret en hemmelighed til Azure-appen
Lær mere om hvordan man forbinder Microsoft Graph API med PowerShell.

Så kan du oprette forbindelse til Microsoft Entra ID (Azure AD) fra PowerShell og få et adgangstoken.

$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 bruge certifikatbaseret godkendelse i Microsoft 365 fra dit PowerShell-script.

Nu kan du få forskellige data fra din Microsoft 365-lejer.

Liste over teams i din lejer:

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

Vis derefter en liste over kanaler i Teams-gruppen efter dens 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: Liste kanaler i et team

Du kan bruge følgende PowerShell-script til at få en liste over beskeder og svar fra 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. 

Dette script får en liste over samtaler fra den angivne kanal, får en liste over svar for hver samtale og genererer en HTML-fil med det fulde indhold af chatten. Svarene til diskussionen i tabellen indeholder nøglefeltet RE.

Tjek vores GitHub-lager for denne scriptkode: https://github.com/maxbakhub/winposh/blob/main/teams/export_messages_teams_chat.ps1

Eksporter Microsoft Teams-chat til html med PowerShell

Håndtering af Microsoft Teams med PowerShell
Håndtering af Microsoft Teams med PowerShell

Det Microsoft Teams PowerShell-modulet er designet til at administrere teams fra kommandolinjen. ...

Sådan forespørges og ændres Teams-brugertilstedeværelsesstatus med PowerShell
Sådan forespørges og ændres Teams-brugertilstedeværelsesstatus med PowerShell

Det kan være nødvendigt at kontrollere brugerens tilstedeværelsesstatus (Online/Veske/Optaget) i ...

Sådan forespørges og ændres Teams-brugertilstedeværelsesstatus med PowerShell
Sådan forespørges og ændres Teams-brugertilstedeværelsesstatus med PowerShell

Det kan være nødvendigt at kontrollere brugerens tilstedeværelsesstatus (Online/Veske/Optaget) i ...