Jak exportovat historii chatu MS Teams pomocí PowerShellu

Admin

V tomto článku se podíváme na to, jak získat přístup a exportovat historii konverzací v Microsoft Teams pomocí PowerShellu.

Chaty týmů jsou uloženy ve skrytu Historie konverzace\Týmový chat složka v a sdílená schránka, která se automaticky vytvoří při vytvoření nové skupiny Microsoft 365 (tím se okamžitě vytvoří skupina Teams, web, knihovna SharePoint Online, skupina Yammer atd.).

Můžeš zabránit uživatelům tenanta Microsoft 365 ve vytváření nových skupin Teams.

K chráněné složce s historií chatu Teams však nemáte přístup pomocí Outlooku nebo jiné aplikace. Můžeš exportovat obsah poštovní schránky Exchange Online do souboru PST použitím Vyhledávání obsahuv Centrum zabezpečení a dodržování předpisů a poté připojte soubor PST v aplikaci Outlook. Ale není to příliš pohodlné. Je mnohem snazší použít PowerShell k získání seznamu chatových zpráv Teams.

K připojení k tenantovi Microsoft 365 použijeme rozhraní Microsoft Graph API.

Dříve jsme vám ukázali, jak na to odeslat zprávu do chatu MS Teams pomocí PowerShellu a Microsoft Graph API.
  1. Vytvoř nový appTeamsView aplikace na Azure Portal (Azure AD -> Registrace aplikace -> Nová registrace);
  2. Zkopírujte následující hodnoty:
    ID aplikace (klienta): your_app_ID
    ID adresáře (tenanta): your_tenant_ID
  3. Přejděte na Oprávnění API, klikněte na Microsoft Graph -> Oprávnění aplikace -> Kanál -> vybrat Kanál. Základní. Přečíst vše a ChannelMessage. Číst.Všechno. Přidejte oprávnění Skupina -> Skupina. Číst. Všechno. Udělte stejná oprávnění v Microsoft Graph -> Delegovaná oprávnění a také v Adresář. AccessAsUser. Všechno.
  4. Klikněte Udělit souhlas správce pro…Udělte oprávnění aplikace v Azure
  5. Poté vytvořte tajemství pro přístup k aplikaci. Jít do Certifikáty a tajemství -> Tajemství nového klienta, zadejte název klíče a dobu jeho platnosti.
    Zkopírujte hodnotu z Hodnota pole:
    Hodnota: your_secret
Vytvořte tajný klíč pro aplikaci Azure
Dozvědět se víc o jak propojit Microsoft Graph API s PowerShell.

Poté se můžete připojit k Microsoft Entra ID (Azure AD) z PowerShellu a získat pří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žít ověřování na základě certifikátu v Microsoft 365 z vašeho skriptu PowerShell.

Nyní můžete získat různá data od svého tenanta Microsoft 365.

Seznam týmů ve vašem tenantovi:

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

Poté zobrazte seznam kanálů ve skupině Teams podle jejich 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: Seznam kanálů v týmu

K získání seznamu zpráv a odpovědí z kanálu Teams můžete použít následující skript PowerShellu:

$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íská seznam konverzací ze zadaného kanálu, získá seznam odpovědí pro každou konverzaci a vygeneruje soubor HTML s úplným obsahem chatu. Odpovědi na diskusi v tabulce obsahují klíčové pole RE.

Podívejte se na naše úložiště GitHub pro tento kód skriptu: https://github.com/maxbakhub/winposh/blob/main/teams/export_messages_teams_chat.ps1

Exportujte chat Microsoft Teams do html pomocí PowerShellu

Jak zakázat automatické spouštění Microsoft Teams
Jak zakázat automatické spouštění Microsoft Teams

Ve výchozím nastavení se při instalaci Office 365/Office 2019 nainstalují všechny aplikace Micros...

Jak odeslat zprávu do kanálu Teams pomocí PowerShellu
Jak odeslat zprávu do kanálu Teams pomocí PowerShellu

Zprávy můžete odesílat do kanálů Teams z PowerShellu pomocí webhooku nebo volání rozhraní Microso...

Správa Microsoft Teams pomocí PowerShellu
Správa Microsoft Teams pomocí PowerShellu

The Microsoft Teams Modul PowerShell je navržen pro správu týmů z příkazového řádku. Pomocí příka...