כיצד לייצא היסטוריית צ'אט של 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

כיצד לשלוח הודעה לערוץ Teams עם PowerShell
כיצד לשלוח הודעה לערוץ Teams עם PowerShell

אתה יכול לשלוח הודעות לערוצי Teams מ-PowerShell באמצעות קריאות webhook או Microsoft Graph API. בו...

ניהול צוותי Microsoft עם PowerShell
ניהול צוותי Microsoft עם PowerShell

ה צוותי מיקרוסופט מודול PowerShell נועד לנהל Teams משורת הפקודה. אתה יכול להשתמש בפקודות מודול Te...

כיצד לבצע שאילתות ולשנות את סטטוס נוכחות המשתמש של Teams עם PowerShell
כיצד לבצע שאילתות ולשנות את סטטוס נוכחות המשתמש של Teams עם PowerShell

ייתכן שיהיה צורך לבדוק את סטטוס הנוכחות של המשתמש (מקוון/במקום/עסוק) ב-Microsoft Teams לפני ביצוע...