Πώς να εξαγάγετε το ιστορικό συνομιλιών του MS Teams με το PowerShell

Admin

Σε αυτό το άρθρο, θα εξετάσουμε τον τρόπο πρόσβασης και εξαγωγής του ιστορικού των συνομιλιών συνομιλίας του Microsoft Teams χρησιμοποιώντας το PowerShell.

Οι συνομιλίες ομάδων αποθηκεύονται σε ένα κρυφό Ιστορικό συνομιλιών\Ομαδική συνομιλία φάκελο σε α κοινόχρηστο γραμματοκιβώτιο, το οποίο δημιουργείται αυτόματα όταν δημιουργείτε μια νέα ομάδα 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 -> Δικαιώματα εφαρμογής -> Κανάλι -> επιλέξτε Κανάλι. Βασικός. Διαβάστε τα όλα και Channel Message. Ανάγνωση.Ολα. Προσθέστε την Ομάδα δικαιωμάτων -> Ομάδα. Ανάγνωση. Ολα. Εκχωρήστε τα ίδια δικαιώματα σε 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

Πώς να στείλετε ένα μήνυμα στο κανάλι της ομάδας με το PowerShell
Πώς να στείλετε ένα μήνυμα στο κανάλι της ομάδας με το PowerShell

Μπορείτε να στείλετε μηνύματα σε κανάλια Teams από το PowerShell χρησιμοποιώντας κλήσεις webhook ...

Διαχείριση του Microsoft Teams με το PowerShell
Διαχείριση του Microsoft Teams με το PowerShell

ο Ομάδες της Microsoft Η μονάδα PowerShell έχει σχεδιαστεί για τη διαχείριση ομάδων από τη γραμμή...

Τρόπος υποβολής ερωτημάτων και αλλαγής της κατάστασης παρουσίας χρήστη ομάδων με το PowerShell
Τρόπος υποβολής ερωτημάτων και αλλαγής της κατάστασης παρουσίας χρήστη ομάδων με το PowerShell

Ενδέχεται να είναι απαραίτητο να ελέγξετε την κατάσταση παρουσίας του χρήστη (Online/Away/Busy) σ...