วิธีส่งออกประวัติการแชทของทีม MS ด้วย PowerShell

Admin

ในบทความนี้ เราจะดูวิธีเข้าถึงและส่งออกประวัติการสนทนาของ Microsoft Teams โดยใช้ PowerShell

การแชทของทีมจะถูกจัดเก็บไว้ในที่ซ่อน ประวัติการสนทนา\การแชทในทีม โฟลเดอร์ใน กล่องจดหมายที่ใช้ร่วมกันซึ่งจะถูกสร้างขึ้นโดยอัตโนมัติเมื่อคุณสร้างกลุ่ม Microsoft 365 ใหม่ (ซึ่งจะสร้างกลุ่ม Teams เว็บไซต์ ไลบรารี SharePoint Online กลุ่ม Yammer ฯลฯ ทันที)

คุณสามารถ ป้องกันผู้ใช้ของผู้เช่า Microsoft 365 จากการสร้างกลุ่ม Teams ใหม่.

อย่างไรก็ตาม คุณไม่สามารถเข้าถึงโฟลเดอร์ที่ได้รับการป้องกันด้วยประวัติการแชทของทีมโดยใช้ Outlook หรือแอปอื่น คุณสามารถ ส่งออกเนื้อหาของกล่องจดหมาย Exchange Online ไปยังไฟล์ PST โดยใช้ ค้นหาเนื้อหาใน ศูนย์ความปลอดภัยและการปฏิบัติตามกฎระเบียบ จากนั้นเชื่อมต่อไฟล์ PST ใน Outlook แต่มันไม่สะดวกเกินไป การใช้ PowerShell เพื่อรับรายการข้อความแชทของทีมทำได้ง่ายกว่ามาก

หากต้องการเชื่อมต่อกับผู้เช่า Microsoft 365 เราจะใช้ Microsoft Graph API

ก่อนหน้านี้เราได้แสดงให้คุณเห็นวิธีการ ส่งข้อความไปยังแชท MS Teams โดยใช้ PowerShell และ Microsoft Graph API
  1. สร้างใหม่ แอพ TeamsView แอปใน Azure Portal (Azure AD -> การลงทะเบียนแอป -> การลงทะเบียนใหม่);
  2. คัดลอกค่าต่อไปนี้:
    รหัสแอปพลิเคชัน (ไคลเอนต์): your_app_ID
    รหัสไดเรกทอรี (ผู้เช่า): your_tenant_ID
  3. ไปที่การอนุญาต API คลิก Microsoft Graph -> การอนุญาตของแอปพลิเคชัน -> ช่องทาง -> เลือก ช่อง. ขั้นพื้นฐาน. อ่านทั้งหมด และ ข้อความช่อง. อ่าน.ทั้งหมด. เพิ่มกลุ่มการอนุญาต -> กลุ่ม. อ่าน. ทั้งหมด. ให้สิทธิ์เดียวกันใน Microsoft Graph -> สิทธิ์ที่ได้รับมอบหมายและยังมาด้วย ไดเรกทอรี การเข้าถึง AsUser ทั้งหมด.
  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

แก้ไข: ข้อผิดพลาด "มีบางอย่างผิดพลาด" เมื่อติดตั้งทีม
แก้ไข: ข้อผิดพลาด "มีบางอย่างผิดพลาด" เมื่อติดตั้งทีม

Microsoft เพิ่งเปิดตัว MS Teams เวอร์ชัน WebView2 สำหรับ Windows การเปลี่ยนจากกลไก Electron เป็นร...

การส่งอีเมลไปยัง Microsoft Teams Channel
การส่งอีเมลไปยัง Microsoft Teams Channel

ในบางกรณี ผู้ใช้อาจต้องส่งหรือส่งต่ออีเมลจากกล่องขาเข้าของ Outlook ไปยังช่องทาง Microsoft Teams โ...

วิธีปิดใช้งานการเริ่มต้นอัตโนมัติของ Microsoft Teams
วิธีปิดใช้งานการเริ่มต้นอัตโนมัติของ Microsoft Teams

ตามค่าเริ่มต้น เมื่อคุณติดตั้ง Office 365/Office 2019 แอป Microsoft Office ทั้งหมดจะถูกติดตั้ง รว...