Σε αυτό το άρθρο, θα εξετάσουμε τον τρόπο πρόσβασης και εξαγωγής του ιστορικού των συνομιλιών συνομιλίας του Microsoft Teams χρησιμοποιώντας το PowerShell.
Οι συνομιλίες ομάδων αποθηκεύονται σε ένα κρυφό Ιστορικό συνομιλιών\Ομαδική συνομιλία φάκελο σε α κοινόχρηστο γραμματοκιβώτιο, το οποίο δημιουργείται αυτόματα όταν δημιουργείτε μια νέα ομάδα Microsoft 365 (αυτό θα δημιουργήσει αμέσως μια ομάδα Teams, έναν ιστότοπο, μια βιβλιοθήκη SharePoint Online, μια ομάδα Yammer κ.λπ.).
Ωστόσο, δεν μπορείτε να αποκτήσετε πρόσβαση στον προστατευμένο φάκελο με ιστορικό συνομιλιών Teams χρησιμοποιώντας το Outlook ή άλλη εφαρμογή. Μπορείς εξάγετε τα περιεχόμενα ενός γραμματοκιβωτίου Exchange Online σε ένα αρχείο PST χρησιμοποιώντας Αναζήτηση περιεχομένουστο Κέντρο ασφάλειας και συμμόρφωσης και, στη συνέχεια, συνδέστε το αρχείο PST στο Outlook. Αλλά δεν είναι πολύ βολικό. Είναι πολύ πιο εύκολο να χρησιμοποιήσετε το PowerShell για να λάβετε μια λίστα με μηνύματα συνομιλίας του Teams.
Για να συνδεθείτε σε έναν μισθωτή του Microsoft 365, θα χρησιμοποιήσουμε το Microsoft Graph API.
- Δημιούργησε ένα νέο appTeamsView εφαρμογή στην πύλη Azure (Azure AD -> Εγγραφή εφαρμογής -> Νέα εγγραφή).
- Αντιγράψτε τις ακόλουθες τιμές:
Αναγνωριστικό εφαρμογής (πελάτη):your_app_ID
Αναγνωριστικό καταλόγου (ενοικιαστή):your_tenant_ID
- Μεταβείτε στα δικαιώματα API, κάντε κλικ στο Γράφημα Microsoft -> Δικαιώματα εφαρμογής -> Κανάλι -> επιλέξτε Κανάλι. Βασικός. Διαβάστε τα όλα και Channel Message. Ανάγνωση.Ολα. Προσθέστε την Ομάδα δικαιωμάτων -> Ομάδα. Ανάγνωση. Ολα. Εκχωρήστε τα ίδια δικαιώματα σε Microsoft Graph -> Εκχωρημένα δικαιώματα και επίσης σε Ευρετήριο. AccessAsUser. Ολα.
- Κάντε κλικ Εκχώρηση συγκατάθεσης διαχειριστή για…
- Στη συνέχεια, δημιουργήστε ένα μυστικό για πρόσβαση στην εφαρμογή. Παω σε Πιστοποιητικά & μυστικά -> Νέα μυστικά πελατών, καθορίστε το όνομα του κλειδιού και την περίοδο ισχύος του.
Αντιγράψτε την τιμή από το αξία πεδίο:
Αξία:your_secret
Στη συνέχεια, μπορείτε να συνδεθείτε στο 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.
Καταγράψτε τις ομάδες του ενοικιαστή σας:
#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 για να λάβετε μια λίστα με μηνύματα και απαντήσεις από το κανάλι 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