ამ სტატიაში ჩვენ განვიხილავთ, თუ როგორ მივიღოთ წვდომა და ექსპორტი Microsoft Teams ჩეთის საუბრების ისტორიაზე PowerShell-ის გამოყენებით.
გუნდების ჩეთები ინახება ფარულად საუბრის ისტორია\გუნდური ჩატი საქაღალდე ა საერთო საფოსტო ყუთი, რომელიც ავტომატურად იქმნება ახალი Microsoft 365 ჯგუფის შექმნისას (ეს მომენტალურად შექმნის Teams ჯგუფს, ვებსაიტს, SharePoint Online ბიბლიოთეკას, Yammer ჯგუფს და ა.შ.).
თუმცა, თქვენ ვერ შეხვალთ დაცულ საქაღალდეში Teams ჩეთის ისტორიით Outlook-ის ან სხვა აპის გამოყენებით. Შენ შეგიძლია Exchange Online საფოსტო ყუთის შიგთავსის ექსპორტი PST ფაილში გამოყენებით შინაარსის ძიებაწელს უსაფრთხოებისა და შესაბამისობის ცენტრი და შემდეგ დააკავშირეთ PST ფაილი Outlook-ში. მაგრამ ეს არ არის ძალიან მოსახერხებელი. ბევრად უფრო ადვილია PowerShell-ის გამოყენება გუნდების ჩატის შეტყობინებების სიის მისაღებად.
Microsoft 365 მოიჯარესთან დასაკავშირებლად, ჩვენ გამოვიყენებთ Microsoft Graph API-ს.
- შექმენით ახალი appTeamsView აპლიკაცია Azure პორტალში (Azure AD -> App რეგისტრაცია -> ახალი რეგისტრაცია);
- დააკოპირეთ შემდეგი მნიშვნელობები:
განაცხადის (კლიენტის) ID:your_app_ID
დირექტორია (მოქირავნე) ID:your_tenant_ID
- გადადით API ნებართვებზე, დააჭირეთ Microsoft Graph -> აპლიკაციის ნებართვები -> არხი -> აირჩიეთ არხი. ძირითადი. წაიკითხეთ ყველა და Channel Message. წაიკითხეთ.ყველა. დაამატეთ ნებართვის ჯგუფი -> ჯგუფი. წაიკითხეთ. ყველა. მიეცით იგივე ნებართვები Microsoft Graph -> დელეგირებული ნებართვები და ასევე დირექტორია. AccessAsUser. ყველა.
- დააწკაპუნეთ ადმინისტრატორის თანხმობის გაცემა…
- შემდეგ შექმენით საიდუმლო აპლიკაციაზე წვდომისთვის. Წადი სერთიფიკატები და საიდუმლოებები -> ახალი კლიენტის საიდუმლოებები, მიუთითეთ გასაღების სახელი და მისი მოქმედების პერიოდი.
დააკოპირეთ მნიშვნელობა დან ღირებულება სფერო:
ღირებულება:your_secret
შემდეგ შეგიძლიათ დაუკავშირდეთ Microsoft Entra ID-ს (Azure AD) PowerShell-იდან და მიიღოთ წვდომის ჟეტონი.
$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.
ახლა თქვენ შეგიძლიათ მიიღოთ სხვადასხვა მონაცემები თქვენი Microsoft 365 მოიჯარედან.
ჩამოთვალეთ გუნდები თქვენს ბინადარში:
#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.
შემდეგ აჩვენეთ არხების სია გუნდების ჯგუფში მისი ID-ით:
# 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 სკრიპტი გუნდების არხიდან შეტყობინებებისა და პასუხების სიის მისაღებად:
$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.
ეს სკრიპტი იღებს საუბრების ჩამონათვალს მითითებული არხიდან, იღებს პასუხების სიას თითოეული საუბრისთვის და ქმნის HTML ფაილს ჩატის სრული შინაარსით. ცხრილის დისკუსიაზე პასუხები შეიცავს საკვანძო ველს RE
.
შეამოწმეთ ჩვენი GitHub საცავი ამ სკრიპტის კოდისთვის: https://github.com/maxbakhub/winposh/blob/main/teams/export_messages_teams_chat.ps1