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 gespeichertGesprächsverlaufTeam-ChatOrdner in einem freigegebenen Postfach, der 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).
Sie können verhindern, 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. Sie können den Inhalt eines Exchange Online-Postfachs mit in eine PST-Datei exportierenInhaltssucheim 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 Sie mithilfe von PowerShell und der Microsoft Graph-API eine Nachricht an einen MS Teams-Chat senden.
- Erstellen Sie ein neuesappTeamsViewApp im Azure-Portal (Azure AD -> App-Registrierung -> Neuregistrierung);
- Kopieren Sie die folgenden Werte:
Anwendungs-(Client-)ID:your_app_ID
Verzeichnis-(Mandanten-)ID:your_tenant_ID - Gehen Sie zu API-Berechtigungen, klicken Sie auf Microsoft Graph -> Anwendungsberechtigungen -> Kanal -> AuswählenChannel.Basic.ReadAllUndChannelMessage.Read.Alle. Fügen Sie die Berechtigungsgruppe hinzu ->Group.Read.All. Gewähren Sie die gleichen Berechtigungen inMicrosoft Graph -> Delegierte Berechtigungen und auch inDirectory.AccessAsUser.All.
- KlickenErteilen Sie die Administratoreinwilligung für…

- Erstellen Sie dann ein Geheimnis, um auf die App zuzugreifen. Gehe zuZertifikate & Geheimnisse->Neue KundengeheimnisseGeben Sie den Schlüsselnamen und seinen Gültigkeitszeitraum an.
Kopieren Sie den Wert aus demWertFeld:
Wert:your_secret


Erfahren Sie mehr darüber, wie Sie die Microsoft Graph-API mit PowerShell verbinden.
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 die zertifikatbasierte Authentifizierung in Microsoft 365 über Ihr PowerShell-Skript verwenden.
Jetzt können Sie verschiedene Daten von Ihrem Microsoft 365-Mandanten abrufen.
Erfahren Sie mehr:Transkript aus Microsoft Teams exportieren: Kurzanleitung
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


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:psteams_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üsselfeldRE.
Schauen Sie sich unser GitHub-Repository für diesen Skriptcode an:https://github.com/maxbakhub/winposh/blob/main/teams/export_messages_teams_chat.ps1
















![Die Größe des Textfelds wird in Word oder Excel nicht geändert [Fix]](https://elsefix.com/tech/tejana/wp-content/uploads/2024/12/text-box-wont-resize-word-excel.png)