PowerShell ile MS Teams Sohbet Geçmişini Dışa Aktarma

Admin

Bu makalede, PowerShell kullanarak Microsoft Teams sohbet konuşmalarının geçmişine nasıl erişilip dışarı aktarılacağına bakacağız.

Teams sohbetleri gizli bir yerde saklanır Konuşma geçmişi\Takım Sohbeti bir klasördeki paylaşılan posta kutusuYeni bir Microsoft 365 grubu oluşturduğunuzda otomatik olarak oluşturulur (bu, anında bir Teams grubu, bir web sitesi, bir SharePoint Online kitaplığı, bir Yammer grubu vb. oluşturacaktır).

Yapabilirsiniz Microsoft 365 kiracısı kullanıcılarının yeni Teams grupları oluşturmasını engelleme.

Ancak Teams sohbet geçmişinin bulunduğu korumalı klasöre Outlook veya başka bir uygulamayı kullanarak erişemezsiniz. Yapabilirsiniz Exchange Online posta kutusunun içeriğini bir PST dosyasına aktarma kullanarak İçerik Aramaiçinde Güvenlik ve Uyumluluk Merkezi'ne gidin ve ardından PST dosyasını Outlook'a bağlayın. Ancak çok uygun değil. Teams sohbet mesajlarının bir listesini almak için PowerShell'i kullanmak çok daha kolaydır.

Microsoft 365 kiracısına bağlanmak için Microsoft Graph API'sini kullanacağız.

Daha önce size nasıl yapılacağını göstermiştik PowerShell kullanarak MS Teams sohbetine mesaj gönderme ve Microsoft Graph API'si.
  1. Yeni bir tane oluştur appTeamsView Azure Portal'daki uygulama (Azure AD -> Uygulama kaydı -> Yeni kayıt);
  2. Aşağıdaki değerleri kopyalayın:
    Uygulama (istemci) kimliği: your_app_ID
    Dizin (kiracı) kimliği: your_tenant_ID
  3. API İzinlerine gidin, Microsoft Graph -> Uygulama izinleri -> Kanal -> seçeneğini tıklayın Kanal. Temel. Hepsini oku Ve Kanal Mesajı. Okumak.Tüm. İzin Grubunu ekleyin -> Grup. Okumak. Tüm. Aynı izinleri şurada verin: Microsoft Graph -> Temsilci izinler ve ayrıca Dizin. Kullanıcı Olarak Erişim. Tüm.
  4. Tıklamak Şunun için Yönetici Onayı Ver:Azure'da uygulama izinleri verme
  5. Ardından uygulamaya erişmek için bir sır oluşturun. Git Sertifikalar ve sırlar -> Yeni müşteri sırları, anahtar adını ve geçerlilik süresini belirtin.
    Değeri şuradan kopyalayın: Değer alan:
    Değer: your_secret
Azure uygulaması için gizli dizi oluşturun
Hakkında daha fazla öğren Microsoft Graph API'sini PowerShell'e bağlama.

Daha sonra PowerShell'den Microsoft Entra ID'ye (Azure AD) bağlanıp bir erişim belirteci alabilirsiniz.

$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. 
Kullanabilirsiniz Microsoft 365'te sertifika tabanlı kimlik doğrulama PowerShell betiğinizden.

Artık Microsoft 365 kiracınızdan çeşitli veriler alabilirsiniz.

Kiracınızdaki Ekipleri listeleyin:

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

Ardından Teams grubundaki kanalların listesini kimliğine göre görüntüleyin:

# 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: Bir ekipteki kanalları listeleme

Teams kanalından gelen mesajların ve yanıtların listesini almak için aşağıdaki PowerShell betiğini kullanabilirsiniz:

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

Bu komut dosyası, belirtilen kanaldan konuşmaların bir listesini alır, her konuşma için yanıtların bir listesini alır ve sohbetin tüm içeriğini içeren bir HTML dosyası oluşturur. Tablodaki tartışmaya verilen yanıtlar anahtar alanı içerir RE.

Bu komut dosyası kodu için GitHub depomuza göz atın: https://github.com/maxbakhub/winposh/blob/main/teams/export_messages_teams_chat.ps1

PowerShell ile Microsoft Teams sohbetini html'ye aktarın

PowerShell ile Ekipler Kullanıcı Durumunu Sorgulama ve Değiştirme
PowerShell ile Ekipler Kullanıcı Durumunu Sorgulama ve Değiştirme

Bazı entegrasyon komut dosyaları için belirli bir eylemi gerçekleştirmeden önce Microsoft Teams'd...

PowerShell ile MS Teams Sohbet Geçmişini Dışa Aktarma
PowerShell ile MS Teams Sohbet Geçmişini Dışa Aktarma

Bu makalede, PowerShell kullanarak Microsoft Teams sohbet konuşmalarının geçmişine nasıl erişilip...