Экспорт бесед Microsoft Teams с помощью интерфейса командной строки для Microsoft 365

По мере того, как все больше организаций внедряют Microsoft 365, а вместе с ним и Microsoft Teams, ИТ-специалисты ищут простые способы управления массивным набором инструментов для повышения производительности и программой совместной работы на рабочем месте. Интерфейс командной строки для Microsoft 365 стал популярным выбором для настройки параметров и конфигураций Microsoft 365 и SharePoint, поскольку он предоставляет ряд параметров управления через молниеносный интерфейс командной строки. Лучше всего то, что интерфейс командной строки для Microsoft 365 добавляет функции, которые просто недоступны в Microsoft Teams или Microsoft 365. Например, вы можете быстро и легко экспортировать беседы Microsoft Teams на локальный диск. Конечно, использование интерфейса командной строки для Microsoft 365 означает поиск и использование правильных команд и сценариев для выполнения ваших задач. К счастью, недостатка в контенте нет.
Но обо всем по порядку: если вы не установили CLI для Microsoft 365, вы можете сделать это с помощью этой однострочной команды PowerShell:
npm i -g @pnp/cli-microsoft365
Теперь давайте перейдем к сути этой статьи. Этот полезный новый сценарий PowerShell позволяет экспортировать беседы из каналов Microsoft Teams на локальный диск. Это может быть полезно по целому ряду причин, например, для целей архивирования или, возможно, вы хотите использовать беседу в другом месте. Вам не нужно быть администратором, чтобы использовать этот скрипт. Microsoft говорит, что вы можете использовать его для экспорта разговоров из любой команды, членом которой вы являетесь.
Сценарий PowerShell изначально был опубликован на сайте Microsoft Tech Community и разработан членом Tech Community Джозефом Веллией. Вот:
function Get-Teams { $teams = m365 team list список команд -o json | ConvertFrom-Json -AsHashtable return $teams } function Get-Channels { param ( [Параметр (обязательный = $true)] [строка] $teamId) $channels = список каналов команд m365 --teamId $teamId -o json | ConvertFrom-Json -AsHashtable return $channels} function Get-Messages { param ([Параметр(обязательный = $true)] [строка] $teamId, [Параметр(обязательный = $true)] [строка] $channelId) $messages = m365 список сообщений команд --teamId $teamId --channelId $channelId -o json | ConvertFrom-Json -AsHashtable return $messages } function Get-MessageReplies { param ( [Параметр(обязательный = $true)] [строка] $teamId, [Параметр(обязательный = $true)] [строка] $channelId, [Параметр(обязательный = $true)] [string] $messageId ) $messageReplies = список ответов на сообщения команд m365 --teamId $teamId --channelId $channelId --messageId $messageId -o json | ConvertFrom-Json -AsHashtable return $messageReplies } Try { $teamsCollection = [System.Collections.ArrayList]@() $teams = Get-Teams $progressCountTeam = 1; foreach ($team in $teams) { Write-Progress -Id 0 -Activity "Обработка каналов в команде: $($team.displayName)" -Status "Team $progressCountTeam of $($teams.length)" -PercentComplete (( $progressCountTeam / $teams.length) * 100) $channelsCollection = [System.Collections.ArrayList]@() $channels = Get-Channels $team.id $progressCountChannel = 1; foreach ($channel in $channels) { Write-Progress -Id 1 -ParentId 0 -Activity "Обработка сообщений в канале: $($channel.displayName)" -Status "Канал $progressCountChannel из $($channels.length)" - PercentComplete (($progressCountChannel / $channels.length) * 100) $messages = Get-Messages $team.id $channel.id $messagesCollection = [System.Collections.ArrayList]@() foreach ($message in $messages) { $messageReplies = Get-MessageReplies $team.id $channel.id $message.id $messageDetails = $message [void]$messageDetails.Add("ответы", $messageReplies) [void]$messagesCollection.Add($messageDetails) } $channelDetails = $channel [void]$channelDetails.Add("сообщения", $messagesCollection) [void]$channelsCollection.Add($channelDetails) $progressCountChannel++ } $teamDetails = $team [void]$teamDetails.Add("каналы", $channelsCollection) [void]$teamsCollection.Add($teamDetails) $progressCountTeam++ } Write-Progress -Id 0 -Activity " " -Status " " -Completed Write-Progress -Id 1 -Activity " " -Sta tus " " -Completed $output = @{} [void]$output.Add("teams", $teamsCollection) $executionDir = $PSScriptRoot $outputFilePath = "$executionDir/$(get-date -f yyyyMMdd-HHmmss). json" # ConvertTo-Json обрезает данные при экспорте в JSON, если они вложены слишком глубоко. Значение параметра Depth по умолчанию равно 2. Установите для параметра -Depth любую глубину, необходимую для сохранения ваших данных. $ вывод | ConvertTo-Json-Глубина 100 | Out-File $outputFilePath Write-Host "Откройте файл $outputFilePath для просмотра результатов" -F Зеленый } Catch { $ErrorMessage = $_.Exception.Message Write-Error $ErrorMessage }
Вы можете найти больше скриптов на сайте CLI GitHub. Если у вас есть какие-либо вопросы или предложения по CLI для Microsoft 365, вы можете обратиться к экспертам на специальной странице в Twitter. Чтобы получить хорошее руководство по началу работы с интерфейсом командной строки для Microsoft 365, щелкните здесь.