So exportieren Sie den Chatverlauf von MS Teams mit PowerShell

Admin

In diesem Artikel sehen wir uns an, wie Sie mit PowerShell auf den Verlauf von Microsoft Teams-Chat-Konversationen zugreifen und ihn exportieren können.

Teams-Chats werden im Verborgenen gespeichert Gesprächsverlauf\Team-Chat Ordner in einem gemeinsames Postfach, das automatisch erstellt wird, wenn Sie eine neue Microsoft 365-Gruppe erstellen (dadurch wird sofort eine Teams-Gruppe, eine Website, eine SharePoint Online-Bibliothek, eine Yammer-Gruppe usw. erstellt).

Du kannst Verhindern Sie, dass Benutzer des Microsoft 365-Mandanten neue Teams-Gruppen erstellen.

Allerdings können Sie mit Outlook oder einer anderen App nicht auf den geschützten Ordner mit einem Teams-Chatverlauf zugreifen. Du kannst Exportieren Sie den Inhalt eines Exchange Online-Postfachs in eine PST-Datei verwenden Inhaltssucheim Security and Compliance Center und verbinden Sie dann die PST-Datei in Outlook. Aber es ist nicht allzu bequem. Es ist viel einfacher, PowerShell zu verwenden, um eine Liste der Teams-Chatnachrichten abzurufen.

Um eine Verbindung zu einem Microsoft 365-Mandanten herzustellen, verwenden wir die Microsoft Graph-API.

Zuvor haben wir Ihnen gezeigt, wie es geht Senden Sie mithilfe von PowerShell eine Nachricht an einen MS Teams-Chat und die Microsoft Graph-API.
  1. Erstelle eine neue appTeamsView App im Azure-Portal (Azure AD -> App-Registrierung -> Neuregistrierung);
  2. Kopieren Sie die folgenden Werte:
    Anwendungs-(Client-)ID: your_app_ID
    Verzeichnis-(Mandanten-)ID: your_tenant_ID
  3. Gehen Sie zu API-Berechtigungen, klicken Sie auf Microsoft Graph -> Anwendungsberechtigungen -> Kanal -> Auswählen Kanal. Basic. Lese alles Und ChannelMessage. Lesen.Alle. Fügen Sie die Berechtigungsgruppe hinzu -> Gruppe. Lesen. Alle. Gewähren Sie die gleichen Berechtigungen in Microsoft Graph -> Delegierte Berechtigungen und auch in Verzeichnis. AccessAsUser. Alle.
  4. Klicken Erteilen Sie die Administratoreinwilligung für…Erteilen Sie App-Berechtigungen in Azure
  5. Erstellen Sie dann ein Geheimnis, um auf die App zuzugreifen. Gehe zu Zertifikate & Geheimnisse -> Neue KundengeheimnisseGeben Sie den Schlüsselnamen und seinen Gültigkeitszeitraum an.
    Kopieren Sie den Wert aus dem Wert Feld:
    Wert: your_secret
Erstellen Sie ein Geheimnis für die Azure-App
Lerne mehr über So verbinden Sie die Microsoft Graph-API mit PowerShell.

Anschließend können Sie über PowerShell eine Verbindung zu Microsoft Entra ID (Azure AD) herstellen und ein Zugriffstoken erhalten.

$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. 
Sie können verwenden Zertifikatbasierte Authentifizierung in Microsoft 365 aus Ihrem PowerShell-Skript.

Jetzt können Sie verschiedene Daten von Ihrem Microsoft 365-Mandanten abrufen.

Listen Sie die Teams in Ihrem Mandanten auf:

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

Zeigen Sie dann eine Liste der Kanäle in der Teams-Gruppe nach ihrer ID an:

# 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: Kanäle in einem Team auflisten

Sie können das folgende PowerShell-Skript verwenden, um eine Liste der Nachrichten und Antworten vom Teams-Kanal abzurufen:

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

Dieses Skript ruft eine Liste der Konversationen vom angegebenen Kanal ab, ruft eine Liste der Antworten für jede Konversation ab und generiert eine HTML-Datei mit dem vollständigen Inhalt des Chats. Die Antworten auf die Diskussion in der Tabelle enthalten das Schlüsselfeld RE.

Schauen Sie sich unser GitHub-Repository für diesen Skriptcode an: https://github.com/maxbakhub/winposh/blob/main/teams/export_messages_teams_chat.ps1

Exportieren Sie Microsoft Teams-Chat mit PowerShell in HTML

Fix: „Etwas ist schief gelaufen“-Fehler bei der Installation von Teams
Fix: „Etwas ist schief gelaufen“-Fehler bei der Installation von Teams

Microsoft hat kürzlich eine neue WebView2-basierte Version von MS Teams für Windows veröffentlich...

Senden einer E-Mail an einen Microsoft Teams-Kanal
Senden einer E-Mail an einen Microsoft Teams-Kanal

In einigen Fällen müssen Benutzer möglicherweise eine E-Mail aus einem Outlook-Posteingang direkt...

So deaktivieren Sie den automatischen Start von Microsoft Teams
So deaktivieren Sie den automatischen Start von Microsoft Teams

Standardmäßig werden bei der Installation von Office 365/Office 2019 alle Microsoft Office-Apps i...