Applies ToExchange Server 2013 Enterprise Edition Exchange Server 2013 Standard Edition

Pazīmes

Pieņemsim, ka izveidojat In-Place eDiscovery meklēšanas lodziņā Exchange administrēšanas centru (EAC) lai atjaunotu vienumus, kas tiek nosūtīta ārējiem adresātiem, norādot adresātiem nav: "internalDomain" meklēšanas kritērijiem. Šādā gadījumā meklēšanas sintakse atgriež vienumus, kas tiek nosūtīti tikai ārējiem adresātiem, bet nav iekļauti vienumi iekšējiem un ārējiem adresātiem.

Cēlonis

Šī problēma rodas, jo eDiscovery izmanto atslēgvārdu vaicājumu valoda (KQL), kas izmanto Būla loģika. Tādēļ adresātiem nav: "internalDomain" izslēdz visus vienumus, kas ietver iekšējo adresātam, pat vienumus, kas ir ārējais adresāts.Piezīme. Pašreizējā izstrādē nenodrošina sīkāk funkcionalitāti, izmantojot EAC.

Risinājums

Lai novērstu šo problēmu, izmantojiet kādu no šīm metodēm.

1. metode: EWSEditor lietošana

Bezmaksas galda EWSEditor lietojumprogramma ir pieejama, lai novērstu šo problēmu. Nav eDiscovery logu, ko var izmantot, lai meklētu vienumu.Piezīme. Ir iestatīta konts tiek izmantots, lai audita RBAC loma šo meklēšanu.

2. metode: Izmanto cita API

Izmantojiet citu API, kas nav atkarīgi KQL. Esat izveidojis pielāgotu risinājumu, izmantojot citas programmas, piemēram, Exchange tīmekļa pakalpojumos (EWS). Risinājumu varat izgūt daļu no datiem (lielāka datu kopas). Risinājumu apstrādāt saņemto rezultātu, izmantojot ārējo loģikas panākt vajadzīgo kopu ziņojumus, kas atbilst adresātiem nav: "internalDomain" kritēriju, varētu interpretēt.Arī identifikācijas turpināt šādu ziņojumu, labāks risinājums ir izmantot transporta kārtulu, kas varētu nosūtīt auditēšanas pastkastes kopijas tādus vienumus (iekšējiem un ārējiem adresātiem).Šis ir parauga kods, lai novērstu šo problēmu, izmantojot EWS Managed API.Piezīme. Kodu piemērā aizstāt InternalDomain1.com InternalDomain2.com, InternalDomain3.com iekšējā domēna nosaukumu. Trīs vietas kods tiek parādīts šis vietturis.

<#AQS search using EWS Managed APIUSAGE: .\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=0do {    $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 GreenWrite-Host "Total Items found:" $ic$StopWatch = $null

3. metode: Profilakses pārraudzībaNoteikšanai vienumi iekšējiem un ārējiem adresātiem, izveidot transporta kārtulu, kas var nosūtīt šādu vienumu kopijas auditēšanas pastkasti.

Statuss

Korporācija Microsoft ir apstiprinājusi, ka tas ir projektēts.

Papildinformācija

Papildinformāciju par In-Place eDiscovery skatiet šajā Microsoft vietnē:

Vispārīga informācija par In-Place eDiscoveryPapildinformāciju par KQL skatiet šajā Microsoft vietnē:

KQL sintakse atsauce

Nepieciešama papildu palīdzība?

Vēlaties vairāk opciju?

Izpētiet abonementa priekšrocības, pārlūkojiet apmācības kursus, uzziniet, kā aizsargāt ierīci un veikt citas darbības.

Kopienas palīdz uzdot jautājumus un atbildēt uz tiem, sniegt atsauksmes, kā arī saņemt informāciju no ekspertiem ar bagātīgām zināšanām.