במאמר זה, נבחן כיצד לגשת ולייצא את ההיסטוריה של שיחות הצ'אט של Microsoft Teams באמצעות PowerShell.
צ'אטים של צוותים מאוחסנים בקובץ מוסתר היסטוריית שיחות\צ'אט צוות תיקייה ב-a תיבת דואר משותפת, שנוצרת אוטומטית כאשר אתה יוצר קבוצה חדשה של Microsoft 365 (פעולה זו תיצור באופן מיידי קבוצת Teams, אתר אינטרנט, ספריית SharePoint Online, קבוצת Yammer וכו').
עם זאת, אינך יכול לגשת לתיקיה המוגנת עם היסטוריית צ'אט של Teams באמצעות Outlook או אפליקציה אחרת. אתה יכול ייצא את התוכן של תיבת דואר של Exchange Online לקובץ PST באמצעות חיפוש תוכןבתוך ה מרכז אבטחה ותאימות ולאחר מכן חבר את קובץ ה-PST ב-Outlook. אבל זה לא נוח מדי. הרבה יותר קל להשתמש ב-PowerShell כדי לקבל רשימה של הודעות צ'אט של Teams.
כדי להתחבר לדייר Microsoft 365, נשתמש ב-Microsoft Graph API.
- ליצור חדש appTeamsView אפליקציה בפורטל Azure (Azure AD -> רישום אפליקציה -> רישום חדש);
- העתק את הערכים הבאים:
מזהה אפליקציה (לקוח):your_app_ID
מזהה ספרייה (דייר):your_tenant_ID
- עבור אל הרשאות API, לחץ על Microsoft Graph -> הרשאות יישומים -> ערוץ -> בחר עָרוּץ. בסיסי. תקרא הכל ו ChannelMessage. לקרוא.את כל. הוסף את קבוצת ההרשאות -> קְבוּצָה. לקרוא. את כל. הענק את אותן הרשאות ב Microsoft Graph -> הרשאות מואצות וגם ב מַדרִיך. AccessAsUser. את כל.
- נְקִישָׁה הענק הסכמת מנהל עבור...
- לאחר מכן צור סוד כדי לגשת לאפליקציה. לך ל תעודות וסודות -> סודות לקוחות חדשים, ציין את שם המפתח ואת תקופת התוקף שלו.
העתק את הערך מה- ערך שדה:
ערך:your_secret
לאחר מכן תוכל להתחבר ל-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 שלך.
רשום את הצוותים בדייר שלך:
#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.
לאחר מכן הצג רשימה של ערוצים בקבוצת צוותים לפי המזהה שלה:
# 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 הבא כדי לקבל רשימה של הודעות ותשובות מערוץ 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