الأعراض
تفترض إنشاء بحث eDiscovery موضعي في تبادل إدارة مركز شرق أفريقيا لإرجاع العناصر التي يتم إرسالها إلى المستلمين الخارجيين عن طريق تحديد غير المستلمين: "إينتيرنالدومين" معايير البحث. في هذه الحالة، بناء جملة البحث بإرجاع العناصر التي يتم إرسالها إلى المستلمين الخارجية فقط، مع استثناء العناصر التي تحتوي على المستلمين الداخلية والخارجية.
السبب
تحدث هذه المشكلة لأن eDiscovery يستخدم لغة الاستعلام الكلمة الأساسية (كقل) تستخدم منطق Boolean. لذلك، غير المستلمين: "إينتيرنالدومين" تستثني كافة العناصر التي تحتوي على مستلم داخلية، حتى العناصر التي تم مستلم خارجية أيضا.
ملاحظة: التصميم الحالي لا توفر وظائف أكثر دقة من خلال مجموعة شرق أفريقيا.الحل البديل
للتغلب على هذه المشكلة، يمكنك استخدام إحدى الطرق التالية.
الأسلوب 1: استخدام اوسيديتور
يتوفر تطبيق اوسيديتور ير مجاناً للتغلب على هذه المشكلة. وهناك إطار برنامج "eDiscovery" الذي يمكن استخدامه للبحث عن عناصر. ملاحظة: يجب عليك إعداد حساب المستخدم لدور RBAC التدقيق للقيام بعمليات البحث هذه.
الطريقة الثانية: استخدام واجهة برمجة تطبيقات مختلفة
استخدام واجهة برمجة تطبيقات مختلفة لا تعتمد على كقل. يجب عليك إنشاء حل مخصص باستخدام برامج أخرى، مثل خدمات ويب Exchange (EWS). الحل استرداد بعض أجزاء البيانات (مجموعة بيانات أكبر). الحل يمكن مواصلة معالجة النتيجة المتلقاة باستخدام منطق خارجية للوصول إلى مجموعة الرسائل التي تتطابق مع المطلوب غير المستلمين: "إينتيرنالدومين" أن تفسير معايير أثناء.
أيضا، لتعريف مثل هذه الرسائل المضي قدما، حل أفضل هو أن استخدام قاعدة نقل التي يمكن أن ترسل نسخاً من هذه الأصناف (المستلمين الداخلية والخارجية) إلى علبة بريد تدوين. التالي نموذج التعليمات برمجية للتغلب على هذه المشكلة باستخدام API المدارة نظم الإنذار المبكر. ملاحظة: في نموذج التعليمات البرمجية هذا باستبدال InternalDomain1.com، InternalDomain2.com، InternalDomain3.com باسم المجال الداخلي الخاص بك. يظهر هذا العنصر النائب في ثلاثة مواقع في التعليمات البرمجية.
<#AQS search using EWS Managed API
USAGE: .\Search-Mailbox.ps1 -MailboxName mbx@domain.com -AqsString "(""Test"")" #> [CmdletBinding()] param ( [Parameter(Position=0,Mandatory=$True,HelpMessage="Mailbox SMTP format")] [ValidateNotNullOrEmpty()] [string]$MailboxName, [Parameter(Position=1,Mandatory=$True,HelpMessage="AQS QueryString")] [ValidateNotNullOrEmpty()] [string]$AqsString ) ####################################################################### # Update EWS DLL Folder,$domain, $account, $pwd and $exserver Values ######################################################################## $resultFL = "C:\Scripts\Result" $domain = "SEARCH" $account = "MailboxSearch@domain.com";$pwd = '123' $exServer = "exch01search.net" $EWSManagedApiPath = "C:\scripts\Microsoft.Exchange.WebServices.dll" ######################################################################## $LogFile_All = "$($resultFL)\$($Mailboxname)_All.txt" $LogFile_Filtr = "$($resultFL)\$($Mailboxname)_Filtered.txt" $LogFile_Itype = "$($resultFL)\$($Mailboxname)_ItemTypes.txt" $StopWatch = New-Object system.Diagnostics.Stopwatch $StopWatch.Start() Add-Type -Path $EWSManagedApiPath $service = New-Object Microsoft.Exchange.WebServices.Data.ExchangeService([Microsoft.Exchange.WebServices.Data.ExchangeVersion]::Exchange2010_SP2) $service.Credentials= new-object Microsoft.Exchange.WebServices.Data.WebCredentials($account,$pwd,$domain) $service.UseDefaultCredentials = $false $UseAutoDiscover = $false $service.Url = new-object uri("https://domain.com/EWS/Exchange.asmx") $ImpersonatedUserId = new-object Microsoft.Exchange.WebServices.Data.ImpersonatedUserId([Microsoft.Exchange.WebServices.Data.ConnectingIdType]::SmtpAddress,$MailboxName); $service.ImpersonatedUserId = $ImpersonatedUserId #Define Extended properties $PR_Folder_Path= new-object Microsoft.Exchange.WebServices.Data.ExtendedPropertyDefinition(26293, [Microsoft.Exchange.WebServices.Data.MapiPropertyType]::String); $PR_FOLDER_TYPE = new-object Microsoft.Exchange.WebServices.Data.ExtendedPropertyDefinition(13825,[Microsoft.Exchange.WebServices.Data.MapiPropertyType]::Integer); $folderidcnt = new-object Microsoft.Exchange.WebServices.Data.FolderId([Microsoft.Exchange.WebServices.Data.WellKnownFolderName]::MsgFolderRoot,$MailboxName) #Define the FolderView used for Export should not be any larger then 1000 folders due to throttling $fvFolderView = New-Object Microsoft.Exchange.WebServices.Data.FolderView(1000) #Deep Transval will ensure all folders in the search path are returned $fvFolderView.Traversal = [Microsoft.Exchange.WebServices.Data.FolderTraversal]::Deep; $pSchPropSet= new-object Microsoft.Exchange.WebServices.Data.PropertySet([Microsoft.Exchange.WebServices.Data.BasePropertySet]::FirstClassProperties) $pSchPropSet.Add($PR_Folder_Path) $fvFolderView.PropertySet = $pSchPropSet #The Search filter will exclude any Search Folders $sfSearchFilter = new-object Microsoft.Exchange.WebServices.Data.SearchFilter+IsEqualTo($PR_FOLDER_TYPE,"1") $fiResult = $null $MsgPropSet = New-Object Microsoft.Exchange.WebServices.Data.PropertySet $MsgPropSet.Add([Microsoft.Exchange.WebServices.Data.ItemSchema]::Id) $MsgPropSet.Add([Microsoft.Exchange.WebServices.Data.ItemSchema]::ParentFolderId) $MsgPropSet.Add([Microsoft.Exchange.WebServices.Data.ItemSchema]::ItemClass) $MsgPropSet.Add([Microsoft.Exchange.WebServices.Data.ItemSchema]::Subject) $MsgPropSet.Add([Microsoft.Exchange.WebServices.Data.ItemSchema]::DateTimeSent) $MsgPropSet.Add([Microsoft.Exchange.WebServices.Data.EmailMessageSchema]::Sender) $MsgPropSet.Add([Microsoft.Exchange.WebServices.Data.EmailMessageSchema]::ToRecipients) $MsgPropSet.Add([Microsoft.Exchange.WebServices.Data.EmailMessageSchema]::ccRecipients) $MsgPropSet.Add([Microsoft.Exchange.WebServices.Data.EmailMessageSchema]::BccRecipients) $AptPropSet = New-Object Microsoft.Exchange.WebServices.Data.PropertySet $AptPropSet.Add([Microsoft.Exchange.WebServices.Data.ItemSchema]::Id) $AptPropSet.Add([Microsoft.Exchange.WebServices.Data.ItemSchema]::ParentFolderId) $AptPropSet.Add([Microsoft.Exchange.WebServices.Data.ItemSchema]::ItemClass) $AptPropSet.Add([Microsoft.Exchange.WebServices.Data.ItemSchema]::Subject) $AptPropSet.Add([Microsoft.Exchange.WebServices.Data.ItemSchema]::DateTimeSent) $AptPropSet.Add([Microsoft.Exchange.WebServices.Data.AppointmentSchema]::Organizer) $AptPropSet.Add([Microsoft.Exchange.WebServices.Data.AppointmentSchema]::RequiredAttendees) $AptPropSet.Add([Microsoft.Exchange.WebServices.Data.AppointmentSchema]::OptionalAttendees) $SchPropSet = New-Object Microsoft.Exchange.WebServices.Data.PropertySet $SchPropSet.Add([Microsoft.Exchange.WebServices.Data.ItemSchema]::Id) $SchPropSet.Add([Microsoft.Exchange.WebServices.Data.ItemSchema]::ParentFolderId) $SchPropSet.Add([Microsoft.Exchange.WebServices.Data.ItemSchema]::ItemClass) $SchPropSet.Add([Microsoft.Exchange.WebServices.Data.ItemSchema]::Subject) $SchPropSet.Add([Microsoft.Exchange.WebServices.Data.ItemSchema]::DateTimeSent) $SchPropSet.Add([Microsoft.Exchange.WebServices.Data.MeetingRequestSchema]::Organizer) $SchPropSet.Add([Microsoft.Exchange.WebServices.Data.MeetingRequestSchema]::RequiredAttendees) $SchPropSet.Add([Microsoft.Exchange.WebServices.Data.MeetingRequestSchema]::OptionalAttendees) #Write-host "Checking Mailbox: $($MailboxName)" #Write-host "Searching QueryString: $($AqsString)" #The Do loop will handle any paging that is required if there are more the 1000 folders in a mailbox $ic=0 $fic=0 do { $fiResult = $Service.FindFolders($folderidcnt,$sfSearchFilter,$fvFolderView) #$fiResult.Folders.Count foreach($ffFolder in $fiResult.Folders){ # "Processing : " + $ffFolder.displayName $fpath = $ffFolder.ExtendedProperties[0].Value $fic++ $fiItems = $null $ItemView = New-Object Microsoft.Exchange.WebServices.Data.ItemView(1000) do{ Write-Progress -Activity "Processing $($MailboxName) - QueryString $($AqsString)" -Status $ffFolder.DisplayName -PercentComplete ($fic/$fiResult.Folders.Count*100) $fiItems = $ffFolder.findItems($AqsString,$ItemView) $ic = $ic + $fiItems.items.count $ItemView.offset += $fiItems.Items.Count foreach($Item in $fiItems.Items){ $itype = "$($item.ItemClass)`t$($Item.id.UniqueId)" Add-content -Value $itype -Path $LogFile_Itype $result="" switch ($item.ItemClass) { "IPM.Note" { $Item.Load($MsgPropSet) $MT = @() # Create a MAPITABLE to filter external Domains $eRecipients="" $result = "$($mailboxname)`t$($fpath)`t$($Item.Sender.Name)`t$($Item.DateTimeSent)`t$($Item.Subject)`t$($Item.id.UniqueId)`t$($item.ItemClass)" Add-content -Value $result -Path $LogFile_All $item.ToRecipients | %{If($_.RoutingType -ne "EX"){$mt+=$_.Address }} $item.ccRecipients | %{If($_.RoutingType -ne "EX"){$mt+=$_.Address}} $item.BccRecipients | %{If($_.RoutingType -ne "EX"){$mt+=$_.Address}} $er=@()<#Replace InternalDomain1.com, InternalDomain2.com, InternalDomain3.com with your internal domain name.#> $mt | %{if($_ -notmatch 'InternalDomain1.com|InternalDomain2.com|InternalDomain3.com'){ $eRecipients = $true $er +=$_ } } } "IPM.Appointment" { $Item.Load($AptPropSet) $MT = @() # Create a MAPITABLE to filter external Domains $eRecipients="" $result = "$($mailboxname)`t$($fpath)`t$($Item.Organizer.Name)`t$($Item.DateTimeSent)`t$($Item.Subject)`t$($Item.id.UniqueId)`t$($item.ItemClass)" Add-content -Value $result -Path $LogFile_All $item.RequiredAttendees | %{If($_.RoutingType -ne "EX"){$mt+=$_.Address }} $item.OptionalAttendees | %{If($_.RoutingType -ne "EX"){$mt+=$_.Address}} $er=@() <#Replace InternalDomain1.com, InternalDomain2.com, and InternalDomain3.com with your internal domain name.#> $mt | %{if($_ -notmatch 'InternalDomain1.com|InternalDomain2.com|InternalDomain3.com'){ $eRecipients = $true $er +=$_ } } } "IPM.Schedule.Meeting.Request" { $Item.Load($SchPropSet) $MT = @() # Create a MAPITABLE to filter external Domains $eRecipients="" $result = "$($mailboxname)`t$($fpath)`t$($Item.Organizer.Name)`t$($Item.DateTimeSent)`t$($Item.Subject)`t$($Item.id.UniqueId)`t$($item.ItemClass)" Add-content -Value $result -Path $LogFile_All $item.RequiredAttendees | %{If($_.RoutingType -ne "EX"){$mt+=$_.Address }} $item.OptionalAttendees | %{If($_.RoutingType -ne "EX"){$mt+=$_.Address}} $er=@()<#Replace InternalDomain1.com, InternalDomain2.com, InternalDomain3.com with your internal domain.#> $mt | %{if($_ -notmatch 'InternalDomain1.com|InternalDomain2.com|InternalDomain3.com'){ $eRecipients = $true $er +=$_ } } } Default {$eRecipients="";$result=""} } #END Switch If($eRecipients){ $er = $er -join ";" $result="$($result)`t$($er)" Add-content -Value $result -Path $LogFile_Filtr } } #End Foreach Items }while($fiItems.MoreAvailable -eq $true) } #End Foreach Folders $fvFolderView.Offset += $fiResult.Folders.Count }while($fiResult.MoreAvailable -eq $true) $StopWatch.Stop() write-host "Completed $($Mailboxname) in Seconds:" $StopWatch.Elapsed.TotalSeconds -ForegroundColor Green Write-Host "Total Items found:" $ic $StopWatch = $null
الطريقة الثالثة: الرصد الوقائيلتحديد العناصر التي تحتوي على المستلمين الداخلية والخارجية، بإنشاء قاعدة نقل يمكنك إرسال نسخ من هذه الأصناف إلى علبة بريد تدوين.
الحالة
أقرت Microsoft أن هذه حسب التصميم.
مزيد من المعلومات
لمزيد من المعلومات حول eDiscovery في المكان، انتقل إلى موقع Microsoft التالي على الويب:
معلومات عامة حول eDiscovery في المكانلمزيد من المعلومات حول كقل، انتقل إلى موقع Microsoft التالي على الويب: