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

Verwalten von Microsoft Teams mit PowerShell
Verwalten von Microsoft Teams mit PowerShell

Der Microsoft-Teams Das PowerShell-Modul dient zur Verwaltung von Teams über die Befehlszeile. Si...

So fragen Sie den Benutzeranwesenheitsstatus von Teams mit PowerShell ab und ändern ihn
So fragen Sie den Benutzeranwesenheitsstatus von Teams mit PowerShell ab und ändern ihn

Für einige Integrationsskripte kann es erforderlich sein, den Anwesenheitsstatus des Benutzers (O...

So fragen Sie den Benutzeranwesenheitsstatus von Teams mit PowerShell ab und ändern ihn
So fragen Sie den Benutzeranwesenheitsstatus von Teams mit PowerShell ab und ändern ihn

Für einige Integrationsskripte kann es erforderlich sein, den Anwesenheitsstatus des Benutzers (O...