U ovom članku ćemo pogledati kako pristupiti i izvesti povijest Microsoft Teams chat razgovora koristeći PowerShell.
Timski razgovori pohranjeni su u skrivenom Povijest razgovora\Timski razgovor mapa u a zajednički poštanski sandučić, koji se automatski stvara kada stvorite novu Microsoft 365 grupu (ovo će odmah stvoriti Teams grupu, web mjesto, SharePoint Online knjižnicu, Yammer grupu itd.).
Međutim, ne možete pristupiti zaštićenoj mapi s Teams poviješću razgovora pomoću Outlooka ili druge aplikacije. Možeš izvozite sadržaj poštanskog sandučića Exchange Online u PST datoteku korištenjem Pretraživanje sadržajau Centar za sigurnost i usklađenost, a zatim povežite PST datoteku u programu Outlook. Ali nije previše zgodno. Puno je lakše koristiti PowerShell za dobivanje popisa Teams poruka chata.
Za povezivanje s Microsoft 365 zakupcem koristit ćemo Microsoft Graph API.
- Stvorite novi appTeamsView aplikacija na Azure portalu (Azure AD -> Registracija aplikacije -> Nova registracija);
- Kopirajte sljedeće vrijednosti:
ID aplikacije (klijenta):your_app_ID
ID imenika (zakupca):your_tenant_ID
- Idite na API dozvole, kliknite Microsoft Graph -> Dozvole aplikacije -> Kanal -> odaberite Kanal. Osnovni, temeljni. ReadAll i ChannelMessage. Čitati.svi. Dodajte grupu dopuštenja -> Skupina. Čitati. Svi. Dodijelite ista dopuštenja u Microsoft Graph -> Delegirana dopuštenja i također u Imenik. AccessAsUser. Svi.
- Klik Odobrite pristanak administratora za…
- Zatim izradite tajnu za pristup aplikaciji. Ići Certifikati i tajne -> Tajne novih klijenata, navedite naziv ključa i njegovo razdoblje valjanosti.
Kopirajte vrijednost iz Vrijednost polje:
Vrijednost:your_secret
Tada se možete povezati na Microsoft Entra ID (Azure AD) iz PowerShell-a i dobiti pristupni token.
$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.
Sada možete dobiti razne podatke od svog Microsoft 365 stanara.
Navedite timove u svom zakupcu:
#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.
Zatim prikažite popis kanala u grupi Timovi prema ID-u:
# 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
Možete koristiti sljedeću PowerShell skriptu da biste dobili popis poruka i odgovora s kanala 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.
Ova skripta dobiva popis razgovora s navedenog kanala, dobiva popis odgovora za svaki razgovor i generira HTML datoteku s punim sadržajem razgovora. Odgovori na raspravu u tablici sadrže ključno polje RE
.
Provjerite naše GitHub repozitorij za ovaj kod skripte: https://github.com/maxbakhub/winposh/blob/main/teams/export_messages_teams_chat.ps1