Cara Mengekspor Riwayat Obrolan MS Team dengan PowerShell

Admin

Pada artikel ini, kita akan melihat cara mengakses dan mengekspor riwayat percakapan obrolan Microsoft Teams menggunakan PowerShell.

Obrolan tim disimpan secara tersembunyi Riwayat percakapan\Obrolan Tim folder di a kotak surat bersama, yang secara otomatis dibuat saat Anda membuat grup Microsoft 365 baru (ini akan langsung membuat grup Teams, situs web, pustaka SharePoint Online, grup Yammer, dll.).

Kamu bisa mencegah pengguna penyewa Microsoft 365 membuat grup Teams baru.

Namun, Anda tidak dapat mengakses folder yang dilindungi dengan riwayat obrolan Teams menggunakan Outlook atau aplikasi lain. Kamu bisa mengekspor konten kotak surat Exchange Online ke file PST menggunakan Pencarian Kontendalam Pusat Keamanan dan Kepatuhan lalu sambungkan file PST di Outlook. Tapi itu sangat tidak nyaman. Jauh lebih mudah menggunakan PowerShell untuk mendapatkan daftar pesan obrolan Teams.

Untuk menyambung ke penyewa Microsoft 365, kami akan menggunakan Microsoft Graph API.

Sebelumnya, kami telah menunjukkan caranya kirim pesan ke obrolan MS Teams menggunakan PowerShell dan API Grafik Microsoft.
  1. Buat yang baru appTeamsView aplikasi di Portal Azure (Azure AD -> Pendaftaran aplikasi -> Pendaftaran baru);
  2. Salin nilai berikut:
    ID Aplikasi (klien): your_app_ID
    ID Direktori (penyewa): your_tenant_ID
  3. Buka Izin API, klik Microsoft Graph -> Izin aplikasi -> Saluran -> pilih Saluran. Dasar. Baca semua Dan Pesan Saluran. Membaca.Semua. Tambahkan izin Grup -> Kelompok. Membaca. Semua. Berikan izin yang sama di Microsoft Graph -> Izin yang didelegasikan dan juga masuk Direktori. Akses Sebagai Pengguna. Semua.
  4. Klik Berikan Persetujuan Admin untuk…Berikan izin aplikasi di Azure
  5. Kemudian buat rahasia untuk mengakses aplikasi. Pergi ke Sertifikat & rahasia -> Rahasia klien baru, tentukan nama kunci dan masa berlakunya.
    Salin nilai dari Nilai bidang:
    Nilai: your_secret
Buat rahasia untuk aplikasi Azure
Belajar lebih tentang cara menghubungkan Microsoft Graph API dengan PowerShell.

Kemudian Anda dapat terhubung ke Microsoft Entra ID (Azure AD) dari PowerShell dan mendapatkan token akses.

$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. 
Anda dapat gunakan autentikasi berbasis sertifikat di Microsoft 365 dari skrip PowerShell Anda.

Sekarang Anda bisa mendapatkan berbagai data dari penyewa Microsoft 365 Anda.

Cantumkan Tim di penyewa Anda:

#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. 

Kemudian tampilkan daftar saluran di grup Teams berdasarkan ID-nya:

# 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: Mencantumkan saluran dalam tim

Anda bisa menggunakan skrip PowerShell berikut untuk mendapatkan daftar pesan dan balasan dari saluran 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. 

Skrip ini mendapatkan daftar percakapan dari saluran yang ditentukan, mendapatkan daftar balasan untuk setiap percakapan, dan menghasilkan file HTML dengan konten obrolan lengkap. Balasan diskusi dalam tabel berisi bidang kunci RE.

Lihat repositori GitHub kami untuk kode skrip ini: https://github.com/maxbakhub/winposh/blob/main/teams/export_messages_teams_chat.ps1

Ekspor obrolan Microsoft Teams ke html dengan PowerShell

Cara Mengirim Pesan ke Saluran Teams dengan PowerShell
Cara Mengirim Pesan ke Saluran Teams dengan PowerShell

Anda dapat mengirim pesan ke saluran Teams dari PowerShell menggunakan webhook atau panggilan Mic...

Mengelola Tim Microsoft dengan PowerShell
Mengelola Tim Microsoft dengan PowerShell

Itu Tim Microsoft Modul PowerShell dirancang untuk mengelola Tim dari baris perintah. Anda dapat ...

Cara Mengkueri dan Mengubah Status Kehadiran Pengguna Tim dengan PowerShell
Cara Mengkueri dan Mengubah Status Kehadiran Pengguna Tim dengan PowerShell

Mungkin perlu memeriksa status kehadiran pengguna (Online/Away/Sibuk) di Microsoft Teams sebelum ...