كيفية تصدير سجل دردشة MS Teams باستخدام PowerShell

Admin

في هذه المقالة، سنلقي نظرة على كيفية الوصول إلى سجل محادثات دردشة Microsoft Teams وتصديره باستخدام PowerShell.

يتم تخزين محادثات الفرق بشكل مخفي سجل المحادثات\دردشة الفريق مجلد في صندوق البريد المشترك، والتي يتم إنشاؤها تلقائيًا عند إنشاء مجموعة 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.
  1. إنشاء جديد appTeamsView التطبيق في مدخل Azure (Azure AD -> تسجيل التطبيق -> تسجيل جديد)؛
  2. انسخ القيم التالية:
    معرف التطبيق (العميل): your_app_ID
    معرف الدليل (المستأجر): your_tenant_ID
  3. انتقل إلى أذونات واجهة برمجة التطبيقات (API)، وانقر فوق Microsoft Graph -> أذونات التطبيق -> القناة -> حدد قناة. أساسي. اقرأ كل شيء و رسالة القناة. يقرأ.الجميع. أضف مجموعة الأذونات -> مجموعة. يقرأ. الجميع. منح نفس الأذونات في Microsoft Graph -> الأذونات المفوضة وأيضًا في الدليل. AccessAsUser. الجميع.
  4. انقر منح موافقة المشرف لـ...منح أذونات التطبيق في Azure
  5. ثم قم بإنشاء سر للوصول إلى التطبيق. اذهب إلى الشهادات والأسرار -> أسرار العميل الجديد، حدد اسم المفتاح وفترة صلاحيته.
    انسخ القيمة من قيمة مجال:
    قيمة: your_secret
إنشاء سر لتطبيق Azure
تعلم المزيد عن كيفية ربط Microsoft Graph API بـ PowerShell.

ثم يمكنك الاتصال بمعرف Microsoft Entra (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
إصلاح: خطأ "حدث خطأ ما" عند تثبيت Teams

أصدرت Microsoft مؤخرًا إصدارًا جديدًا يستند إلى WebView2 من MS Teams لنظام التشغيل Windows. أدى ا...

إرسال بريد إلكتروني إلى قناة Microsoft Teams
إرسال بريد إلكتروني إلى قناة Microsoft Teams

في بعض الحالات ، قد يحتاج المستخدمون إلى إرسال بريد إلكتروني أو إعادة توجيهه من علبة وارد Outlook...

كيفية تعطيل بدء التشغيل التلقائي لـ Microsoft Teams
كيفية تعطيل بدء التشغيل التلقائي لـ Microsoft Teams

بشكل افتراضي ، عند تثبيت Office 365 / Office 2019 ، يتم تثبيت جميع تطبيقات Microsoft Office ، بما...