Jak wyeksportować historię czatów MS Teams za pomocą programu PowerShell

Admin

W tym artykule przyjrzymy się, jak uzyskać dostęp do historii rozmów na czacie w aplikacji Microsoft Teams i ją wyeksportować za pomocą programu PowerShell.

Czaty zespołów są przechowywane w ukrytym pliku Historia rozmów\Czat zespołu folder w A wspólna skrzynka pocztowa, która jest tworzona automatycznie podczas tworzenia nowej grupy Microsoft 365 (spowoduje to natychmiastowe utworzenie grupy Teams, witryny internetowej, biblioteki SharePoint Online, grupy Yammer itp.).

Możesz uniemożliwiaj użytkownikom dzierżawy Microsoft 365 tworzenie nowych grup Teams.

Nie można jednak uzyskać dostępu do chronionego folderu za pomocą historii czatów w aplikacji Teams przy użyciu programu Outlook lub innej aplikacji. Możesz wyeksportuj zawartość skrzynki pocztowej Exchange Online do pliku PST za pomocą Wyszukiwanie treściw Centrum Bezpieczeństwa i Zgodności, a następnie podłącz plik PST w programie Outlook. Ale nie jest to zbyt wygodne. O wiele łatwiej jest korzystać z programu PowerShell, aby uzyskać listę wiadomości czatu w aplikacji Teams.

Aby połączyć się z dzierżawcą Microsoft 365, użyjemy interfejsu API Microsoft Graph.

Wcześniej pokazaliśmy, jak to zrobić wyślij wiadomość na czat MS Teams za pomocą programu PowerShell oraz interfejs API Microsoft Graph.
  1. Stwórz nowy aplikacjaTeamsView aplikacja w Azure Portal (Azure AD -> Rejestracja aplikacji -> Nowa rejestracja);
  2. Skopiuj następujące wartości:
    Identyfikator aplikacji (klienta): your_app_ID
    Identyfikator katalogu (dzierżawcy): your_tenant_ID
  3. Przejdź do Uprawnień API, kliknij Microsoft Graph -> Uprawnienia aplikacji -> Kanał -> wybierz Kanał. Podstawowy. Czytaj wszystko I Wiadomość kanału. Czytać.Wszystko. Dodaj uprawnienia Grupa -> Grupa. Czytać. Wszystko. Przyznaj te same uprawnienia w Microsoft Graph -> Delegowane uprawnienia, a także w Informator. Dostęp jako użytkownik. Wszystko.
  4. Kliknij Udziel zgody administratora na…Przyznaj uprawnienia aplikacji na platformie Azure
  5. Następnie utwórz klucz tajny, aby uzyskać dostęp do aplikacji. Iść do Certyfikaty i tajemnice -> Nowe tajemnice klienta, podaj nazwę klucza i okres jego ważności.
    Skopiuj wartość z pliku Wartość pole:
    Wartość: your_secret
Utwórz klucz tajny dla aplikacji platformy Azure
Dowiedz się więcej o jak połączyć API Microsoft Graph z PowerShellem.

Następnie możesz połączyć się z Microsoft Entra ID (Azure AD) z PowerShell i uzyskać token dostępu.

$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. 
Możesz użyć uwierzytelnianie oparte na certyfikatach w Microsoft 365 ze skryptu PowerShell.

Teraz możesz uzyskać różne dane od dzierżawy Microsoft 365.

Lista zespołów w Twojej dzierżawie:

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

Następnie wyświetl listę kanałów w grupie Teams według ich identyfikatorów:

# 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: Wyświetl listę kanałów w zespole

Aby uzyskać listę wiadomości i odpowiedzi z kanału Teams, możesz użyć następującego skryptu PowerShell:

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

Skrypt ten pobiera listę rozmów z określonego kanału, pobiera listę odpowiedzi dla każdej rozmowy i generuje plik HTML z pełną zawartością czatu. Odpowiedzi na dyskusję w tabeli zawierają pole klucza RE.

Sprawdź nasze repozytorium GitHub, aby znaleźć ten kod skryptu: https://github.com/maxbakhub/winposh/blob/main/teams/export_messages_teams_chat.ps1

Eksportuj czat Microsoft Teams do formatu HTML za pomocą programu PowerShell

Jak wysyłać zapytania i zmieniać stan obecności użytkownika Teams za pomocą programu PowerShell
Jak wysyłać zapytania i zmieniać stan obecności użytkownika Teams za pomocą programu PowerShell

W przypadku niektórych skryptów integracyjnych może zaistnieć konieczność sprawdzenia statusu obe...

Jak wyeksportować historię czatów MS Teams za pomocą programu PowerShell
Jak wyeksportować historię czatów MS Teams za pomocą programu PowerShell

W tym artykule przyjrzymy się, jak uzyskać dostęp do historii rozmów na czacie w aplikacji Micros...