כיצד לייצא היסטוריית צ'אט של 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. העתק את הערכים הבאים:
    מזהה אפליקציה (לקוח): your_app_ID
    מזהה ספרייה (דייר): your_tenant_ID
  3. עבור אל הרשאות API, לחץ על Microsoft Graph -> הרשאות יישומים -> ערוץ -> בחר עָרוּץ. בסיסי. תקרא הכל ו 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. 

לאחר מכן הצג רשימה של ערוצים בקבוצת צוותים לפי המזהה שלה:

# 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

תיקון: שגיאת "משהו השתבש" בעת התקנת צוותים
תיקון: שגיאת "משהו השתבש" בעת התקנת צוותים

מיקרוסופט פרסמה לאחרונה גרסה חדשה מבוססת WebView2 של MS Teams עבור Windows. המעבר ממנוע האלקטרון ...

שליחת דואר אלקטרוני לערוץ Microsoft Teams
שליחת דואר אלקטרוני לערוץ Microsoft Teams

במקרים מסוימים, ייתכן שמשתמשים יצטרכו לשלוח או להעביר דואר אלקטרוני מתיבת דואר נכנס של Outlook יש...

כיצד להשבית את ההפעלה האוטומטית של Microsoft Teams
כיצד להשבית את ההפעלה האוטומטית של Microsoft Teams

כברירת מחדל, בעת התקנת Office 365/Office 2019, כל אפליקציות Microsoft Office מותקנות, כולל צוותים...