Як експортувати історію чатів 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, ми будемо використовувати Microsoft Graph API.

Раніше ми показали вам, як це зробити
надіслати повідомлення в чат 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 за її ідентифікатором:

# 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

Може знадобитися перевірити стан присутності користувача (в мережі/відсутній/зайнятий) у Microsof...

Як експортувати історію чатів MS Teams за допомогою PowerShell
Як експортувати історію чатів MS Teams за допомогою PowerShell

У цій статті ми розглянемо, як отримати доступ і експортувати історію розмов у чаті Microsoft Tea...