Как да експортирате история на чатовете на MS Teams с PowerShell

Admin

В тази статия ще разгледаме как да получите достъп и да експортирате хронологията на чат разговорите на Microsoft Teams с помощта на PowerShell.

Екипните чатове се съхраняват в скрито История на разговорите\Екипен чат папка в a споделена пощенска кутия, който се създава автоматично, когато създадете нова група Microsoft 365 (това незабавно ще създаде група Teams, уебсайт, библиотека на SharePoint Online, група Yammer и т.н.).

Можеш попречете на потребителите на клиента на Microsoft 365 да създават нови групи Teams.

Въпреки това не можете да осъществите достъп до защитената папка с хронология на чата на Teams с помощта на Outlook или друго приложение. Можеш експортирайте съдържанието на пощенска кутия на Exchange Online в PST файл използвайки Търсене на съдържаниев Център за сигурност и съответствие и след това свържете PST файла в Outlook. Но не е много удобно. Много по-лесно е да използвате PowerShell, за да получите списък със съобщения в чата на Teams.

За да се свържем с клиент на Microsoft 365, ще използваме API на Microsoft Graph.

По-рано ви показахме как да изпратете съобщение до чат на MS Teams с помощта на PowerShell и Microsoft Graph API.
  1. Създайте нов appTeamsView приложение в портала на Azure (Azure AD -> Регистрация на приложение -> Нова регистрация);
  2. Копирайте следните стойности:
    ID на приложението (клиента): your_app_ID
    ИД на директория (наемател): your_tenant_ID
  3. Отидете на API разрешения, щракнете върху Microsoft Graph -> Разрешения за приложения -> Канал -> изберете Канал. Основен. ReadAll и ChannelMessage. Прочети.всичко. Добавете групата за разрешения -> Група. Прочети. Всичко. Дайте същите разрешения в Microsoft Graph -> Делегирани разрешения, а също и в Справочник. AccessAsUser. Всичко.
  4. Кликнете Предоставяне на администраторско съгласие за...Предоставяне на разрешения за приложения в Azure
  5. След това създайте тайна за достъп до приложението. Отидете на Сертификати и тайни -> Нови клиентски тайни, посочете името на ключа и срока му на валидност.
    Копирайте стойността от Стойност поле:
    Стойност: your_secret
Създайте тайна за приложението Azure
Научете повече за как да свържете Microsoft Graph API с PowerShell.

След това можете да се свържете с Microsoft Entra ID (Azure AD) от PowerShell и да получите токен за достъп.

$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. 
Можеш да използваш базирано на сертификат удостоверяване в Microsoft 365 от вашия скрипт PowerShell.

Сега можете да получите различни данни от вашия клиент на Microsoft 365.

Избройте екипите във вашия клиент:

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

След това покажете списък с канали в групата Teams по нейния 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: Избройте канали в екип

Можете да използвате следния скрипт на PowerShell, за да получите списък със съобщения и отговори от канала на Teams:

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

Този скрипт получава списък с разговори от посочения канал, получава списък с отговори за всеки разговор и генерира HTML файл с пълното съдържание на чата. Отговорите на дискусията в таблицата съдържат ключовото поле RE.

Разгледайте нашето хранилище на GitHub за този код на скрипта: https://github.com/maxbakhub/winposh/blob/main/teams/export_messages_teams_chat.ps1

Експортирайте чата на Microsoft Teams в html с PowerShell

Как да правите заявки и да променяте статуса на потребителско присъствие на Teams с PowerShell
Как да правите заявки и да променяте статуса на потребителско присъствие на Teams с PowerShell

Може да се наложи да проверите състоянието на присъствие на потребителя (онлайн/навън/зает) в Mic...

Как да правите заявки и да променяте статуса на потребителско присъствие на Teams с PowerShell
Как да правите заявки и да променяте статуса на потребителско присъствие на Teams с PowerShell

Може да се наложи да проверите състоянието на присъствие на потребителя (онлайн/навън/зает) в Mic...

Как да експортирате история на чатовете на MS Teams с PowerShell
Как да експортирате история на чатовете на MS Teams с PowerShell

В тази статия ще разгледаме как да получите достъп и да експортирате хронологията на чат разговор...