Ako exportovať históriu chatu MS Teams pomocou PowerShell

Admin

V tomto článku sa pozrieme na to, ako získať prístup a exportovať históriu konverzácií Microsoft Teams pomocou PowerShell.

Tímové rozhovory sú uložené v skrytom priestore História konverzácie\Tímový chat priečinok v a zdieľaná schránka, ktorá sa automaticky vytvorí pri vytváraní novej skupiny v Microsoft 365 (tým sa okamžite vytvorí skupina Teams, webová lokalita, knižnica SharePoint Online, skupina Yammer atď.).

Môžeš zabrániť používateľom nájomníka Microsoft 365 vo vytváraní nových skupín Teams.

K chránenému priečinku s históriou rozhovorov Teams však nemôžete pristupovať pomocou Outlooku alebo inej aplikácie. Môžeš exportovať obsah poštovej schránky Exchange Online do súboru PST použitím Vyhľadávanie obsahuv Centrum zabezpečenia a súladu a potom pripojte súbor PST v programe Outlook. Ale nie je to príliš pohodlné. Je oveľa jednoduchšie použiť PowerShell na získanie zoznamu správ chatu Teams.

Na pripojenie k nájomníkovi Microsoft 365 použijeme rozhranie Microsoft Graph API.

Predtým sme vám ukázali, ako na to odoslať správu do chatu MS Teams pomocou PowerShell a Microsoft Graph API.
  1. Vytvorte nový appTeamsView aplikáciu na portáli Azure (Azure AD -> Registrácia aplikácie -> Nová registrácia);
  2. Skopírujte nasledujúce hodnoty:
    ID aplikácie (klienta): your_app_ID
    ID adresára (nájomca): your_tenant_ID
  3. Prejdite na Povolenia rozhrania API, kliknite na položku Microsoft Graph -> Povolenia aplikácie -> Kanál -> vyberte kanál. Základné. ReadAll a ChannelMessage. Čítať.Všetky. Pridajte povolenie Skupina -> Skupina. Čítať. Všetky. Udeľte rovnaké povolenia v Microsoft Graph -> Delegované povolenia a tiež v Adresár. AccessAsUser. Všetky.
  4. Kliknite Udeliť súhlas správcu pre…Udeľte povolenia aplikácii v Azure
  5. Potom vytvorte tajomstvo na prístup k aplikácii. Ísť do Certifikáty a tajomstvá -> Nové tajomstvá klienta, uveďte názov kľúča a dobu jeho platnosti.
    Skopírujte hodnotu z Hodnota lúka:
    Hodnota: your_secret
Vytvorte tajomstvo pre aplikáciu Azure
Naučiť sa viac o ako prepojiť Microsoft Graph API s PowerShell.

Potom sa môžete pripojiť k Microsoft Entra ID (Azure AD) z PowerShell a získať prístupový token.

$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. 
Môžeš použiť overenie založené na certifikáte v Microsoft 365 z vášho skriptu PowerShell.

Teraz môžete získať rôzne údaje od svojho nájomníka Microsoft 365.

Uveďte tímy vo svojom nájomníkovi:

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

Potom zobrazte zoznam kanálov v skupine Teams podľa ich 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: Zoznam kanálov v tíme

Na získanie zoznamu správ a odpovedí z kanála Teams môžete použiť nasledujúci skript PowerShell:

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

Tento skript získa zoznam konverzácií zo zadaného kanála, získa zoznam odpovedí pre každú konverzáciu a vygeneruje súbor HTML s úplným obsahom rozhovoru. Odpovede na diskusiu v tabuľke obsahujú kľúčové pole RE.

Tento kód skriptu nájdete v našom úložisku GitHub: https://github.com/maxbakhub/winposh/blob/main/teams/export_messages_teams_chat.ps1

Exportujte chat Microsoft Teams do html pomocou PowerShell

Ako poslať správu na kanál Teams pomocou PowerShell
Ako poslať správu na kanál Teams pomocou PowerShell

Správy môžete odosielať do kanálov Teams z prostredia PowerShell pomocou webhooku alebo volaní ro...

Správa Microsoft Teams pomocou PowerShell
Správa Microsoft Teams pomocou PowerShell

The Microsoft Teams Modul PowerShell je určený na správu tímov z príkazového riadku. Príkazy modu...

Ako sa dotazovať a meniť stav prítomnosti používateľov Teams pomocou PowerShell
Ako sa dotazovať a meniť stav prítomnosti používateľov Teams pomocou PowerShell

Pred vykonaním konkrétnej akcie pre niektoré integračné skripty môže byť potrebné skontrolovať st...