इस लेख में, हम देखेंगे कि PowerShell का उपयोग करके Microsoft Teams चैट वार्तालापों के इतिहास तक कैसे पहुँचें और निर्यात करें।
टीमों की चैट गुप्त रूप से संग्रहीत की जाती हैं बातचीत का इतिहास\टीम चैट ए में फ़ोल्डर साझा मेलबॉक्स, जो स्वचालित रूप से तब बनता है जब आप एक नया Microsoft 365 समूह बनाते हैं (यह तुरंत एक टीम समूह, एक वेबसाइट, एक SharePoint ऑनलाइन लाइब्रेरी, एक यमर समूह, आदि बना देगा)।
हालाँकि, आप आउटलुक या किसी अन्य ऐप का उपयोग करके टीम चैट इतिहास के साथ संरक्षित फ़ोल्डर तक नहीं पहुंच सकते। तुम कर सकते हो एक्सचेंज ऑनलाइन मेलबॉक्स की सामग्री को पीएसटी फ़ाइल में निर्यात करें का उपयोग करते हुए सामग्री खोजमें सुरक्षा और अनुपालन केंद्र और फिर आउटलुक में पीएसटी फ़ाइल कनेक्ट करें। लेकिन यह बहुत सुविधाजनक नहीं है. टीम चैट संदेशों की सूची प्राप्त करने के लिए PowerShell का उपयोग करना बहुत आसान है।
Microsoft 365 टैनेंट से कनेक्ट करने के लिए, हम Microsoft ग्राफ़ एपीआई का उपयोग करेंगे।
- कोई नया बनाएं ऐपटीम्सव्यू Azure पोर्टल में ऐप (Azure AD -> ऐप पंजीकरण -> नया पंजीकरण);
- निम्नलिखित मानों की प्रतिलिपि बनाएँ:
एप्लिकेशन (क्लाइंट) आईडी:your_app_ID
निर्देशिका (किरायेदार) आईडी:your_tenant_ID
- API अनुमतियाँ पर जाएँ, Microsoft ग्राफ़ -> एप्लिकेशन अनुमतियाँ -> चैनल -> चयन पर क्लिक करें चैनल। बुनियादी। सब पढ़ें और चैनल संदेश. पढ़ना.सभी. अनुमति समूह जोड़ें -> समूह। पढ़ना। सभी। में समान अनुमतियाँ प्रदान करें Microsoft ग्राफ़ -> प्रत्यायोजित अनुमतियाँ और भी निर्देशिका। AccessAsUser. सभी।
- क्लिक इसके लिए व्यवस्थापकीय सहमति प्रदान करें…
- फिर ऐप तक पहुंचने के लिए एक रहस्य बनाएं। जाओ प्रमाणपत्र और रहस्य -> नए ग्राहक रहस्य, कुंजी का नाम और उसकी वैधता अवधि निर्दिष्ट करें।
से मान कॉपी करें कीमत मैदान:
कीमत:your_secret
फिर आप PowerShell से Microsoft Entra ID (Azure AD) से कनेक्ट कर सकते हैं और एक्सेस टोकन प्राप्त कर सकते हैं।
$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.
फिर टीम समूह में उसकी आईडी के आधार पर चैनलों की एक सूची प्रदर्शित करें:
# 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
आप टीम्स चैनल से संदेशों और उत्तरों की सूची प्राप्त करने के लिए निम्नलिखित पावरशेल स्क्रिप्ट का उपयोग कर सकते हैं:
$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