PowerShell ile Exchange Server'daki (Microsoft 365) Kullanıcı Posta Kutularından E-postaları Arayın ve Silin
Exchange Server'da, arama yapmak için Search-Mailbox veya New-ComplianceSearch PowerShell cmdlet'lerini (Exchange Server ve Exchange Online/Microsoft 365'in daha yeni sürümlerinde mevcuttur) kullanabilirsiniz. kullanıcı posta kutularından e-posta öğelerini silin. Örneğin, bir kullanıcı yanlışlıkla özel verileri kuruluştaki iş arkadaşlarına gönderdi ve iletiyi Outlook'ta geri çağırmak için zamanı olmadı. Bilgi güvenliği departmanı, bir Exchange yöneticisinin bu özel e-postayı Exchange kuruluşunuzdaki/kiracınızdaki tüm kullanıcı posta kutularından silmesini şart koşuyor.
Makale, kurum içi Exchange Server 2019/2016/2013 ve 2010 ile bulut tabanlı Exchange Online (Microsoft 365) için geçerlidir.
Exchange Posta Kutularını Aramak İçin Gerekli İzinler
Posta kutusu öğelerini arayan ve silen yönetici hesabına aşağıdaki roller atanmalıdır:
Posta Kutusu İçe Aktarma Dışa Aktarma
Posta Kutusu Araması
Rolleri EAC veya PowerShell kullanarak atayabilirsiniz. Şirket içi Exchange Sunucunuza PowerShell kullanarak bağlanın ve şu komutları çalıştırın:
New-ManagementRoleAssignment -User j.anderson -Role "Mailbox Import Export"
New-ManagementRoleAssignment -User j.anderson -Role "Mailbox Search”Exchange Online'da aşağıdaki rolleri atamanız gerekir:
Add-RoleGroupMember "Discovery Management" -member max@a-d.site
New-RoleGroup "Mailbox Import-Export Management" -Roles "Mailbox Import Export"
Add-RoleGroupMember "Mailbox Import-Export Management" -Member max@a-d.siteHesabınızı Microsoft 365 Uyumluluk Merkezi'ndeki eDiscovery Admins grubuna ekleyin
İpucu. Exchange Online'a bağlanmak için Exchange Online PowerShell v2 (EXO V2) modülünü kullanabilirsiniz.
Roller atandıktan sonra PowerShell oturumunu yeniden başlatın.
Arama-Posta Kutusu: Exchange Kullanıcı Posta Kutularından Mesaj Arama ve Silme
Kullanıcı posta kutularındaki e-posta öğelerini aramak için Exchange Admin Center (EAC) web arayüzünü veya Search-Mailbox PowerShell cmdlet'ini kullanabilirsiniz. Bu komut, posta kutularındaki e-postaları belirli kriterlere göre aramanıza, bulunan öğeleri başka bir posta kutusuna kopyalamanıza veya kaldırmanıza olanak tanır.
Bir kullanıcının posta kutusunda belirli bir konuya sahip e-postaları aramak için şu komutu çalıştırın:
Search-Mailbox -Identity k.peterson -SearchQuery 'Subject:"Annual Report"'Exchange organizasyonundaki tüm posta kutularını aramak için aşağıdaki komutu kullanın:
Get-Mailbox -ResultSize unlimited | Search-Mailbox -SearchQuery 'Subject:"Annual Report"'Exchange Online'da (Microsoft 365) Search-Mailbox cmdlet'ini kullanırken bir uyarı görünür:
WARNING: On July 1, 2020, the Search-Mailbox cmdlet is being retired and Microsoft Support will no longer provide assistance. See https://go.microsoft.com/fwlink/?linkid=2113221 to learn more. WARNING: The Search-Mailbox cmdlet returns up to 10000 results per mailbox if a search query is specified. To return more than 10000 results, use the New-MailboxSearch cmdlet or the In-Place eDiscovery & Hold console in the Exchange Administration Center.
Microsoft, daha güçlü olanı kullanmanızı önerir
New-ComplianceSearchVe
New-ComplianceSearchActionposta kutusu arama cmdlet'leri (aşağıda ele alınmıştır).
Arama sonuçlarını belirli bir posta kutusuna ve klasöre kopyalamak için TargetMailbox veya TargetFolder parametrelerini kullanın. Bu, arama tamamlandıktan sonra bulunan e-postaları Outlook'ta manuel olarak görüntülemenize olanak tanır. Posta kutuları listesinde (users.txt dosyasında verilen) e-posta mesajlarını aramanız ve bulunan öğeleri belirli posta kutusundaki klasöre kopyalamanız gerektiğini varsayalım:
get-content users.txt | Get-Mailbox -ResultSize unlimited | Search-Mailbox -SearchQuery 'Subject:"Annual Report"' -TargetMailbox sec_dept -TargetFolder "ExchSearchResult”-LogOnly -LogLevel Full seçeneği, arama sonuçlarının yalnızca öğeler bir hedef posta kutusuna kopyalanmadan veya iletiler silinmeden tahmin edilmesi gerektiği anlamına gelir. Bu bağımsız değişken kullanılırsa, arama sonuçlarını içeren bir rapor belirtilen hedef posta kutusuna gönderilir. Rapor, arama ölçütlerini karşılayan posta kutularını listeleyen arşivlenmiş bir CSV dosyasıdır.
Lütfen alınan raporun Okuma Durumu ( Okuma Durumu) e-posta mesajına sahip olduğunu unutmayın.
Read: True/False).
-EstimateResultOnly parametresini kullanarak arama sonuçlarını tahmin edebilirsiniz. Lütfen, bu seçeneği kullanırken bir hedef posta kutusu veya klasör belirtmeniz gerekmediğini unutmayın.
Get-Mailbox | Search-Mailbox -SearchQuery 'Subject:"report"' -EstimateResultOnly|select Identity,ResultItemsCount,ResultItemsSize| Where-Object ResultItemsCount -gt 0
Bulunan e-posta öğelerini silmek için -DeleteContent parametresini kullanın. Onay istemlerini atlamak için -Force parametresini ekleyin
İlgili Exchange sunucusundaki tüm posta kutularındaki k.peterson@a-d.site göndericisinden gelen tüm e-posta mesajlarını silelim:
Get-Mailbox -Server berl-ex1 -ResultSize unlimited | Search-Mailbox -SearchQuery 'from:"k.peterson@a-d.site"' -DeleteContent -Force-DeleteContent parametresini kullanarak posta kutularından e-posta öğelerini kaldırmadan önce, bulunan e-postaları
-EstimateResultOnlyveya
-LogOnlyargümanlar.
Yalnızca silinen öğeleri aramak için -SearchDumpsterOnly parametresini ekleyin (silinen öğeler arasında aramayı hariç tutmak için,
-SearchDumpster:$falseargüman). Bir arşiv posta kutusunu arama sonucundan hariç tutmanız gerekirse, -DoNotIncludeArchive parametresini kullanın.
Search-Mailbox cmdlet'inin önemli bir sınırlaması vardır: yalnızca 10.000 öğe döndürebilir. Bu sınır aşılırsa şu hatayı döndürür:
Sending data to a remote command failed with the following error message: The total data received from the remote client exceeded allowed maximum. Allowed maximum is 524288000.Daha fazla öğe silmek için Search-Mailbox cmdlet'ini birkaç kez çalıştırmanız veya posta kutularını posta kutusu veritabanlarına veya Exchange sunucularına göre gruplara ayırmanız gerekir.
Get-Mailbox -Database berl-ex1 | Search-Mailbox -SearchQuery 'from:spam@spambot.org' -DeleteContent -ForceBaşka bir Search-Mailbox cmdlet sorunu, düşük performansıdır. Büyük bir şirket söz konusu olduğunda, arama birkaç gün sürebilir. Exchange Server ve Microsoft 365'in modern sürümlerinde, e-posta aramak için New-ComplianceSearch cmdlet'ini (aşağıda ele alınmıştır) kullanmak en iyisidir.
Exchange Posta Kutuları için Anahtar Kelime Arama Örnekleri
SearchQuery parametresini kullanarak e-posta öğelerini bulmak için arama sorgusu örneklerine bakalım. SearchQuery parametresi, sorguyu KQL biçiminde (Anahtar Kelime Sorgulama Dili) işler https://docs.microsoft.com/en-us/sharepoint/dev/general-development/keyword-query-language-kql -sözdizimi-referansı.
Konusunda "Gizli" anahtar kelimesini içeren tüm e-postaları, alanınızdan olmayan tüm kullanıcılardan bulmak ve kaldırmak için:
Search-Mailbox -Identity k.peterson -SearchQuery 'Subject:"Secret" and from<>”a-d.site”' -DeleteContentOR ve AND mantıksal işleçlerini kullanarak, daha karmaşık e-posta arama koşullarını birleştirebilirsiniz.
20 MB'den büyük ekleri olan tüm e-postaları bulun ve silin:
Search-Mailbox -Identity k.peterson -SearchQuery 'hasattachment:true AND Size >20971520' -DeleteContentİpucu. E-posta öğelerinin boyutu bayt cinsinden belirtilir ve yalnızca eklerin değil, tüm e-posta öğesinin boyutu sayılır. Boyutu megabayt cinsinden de belirleyebilirsiniz. Bu durumda, aşağıdaki sözdizimi kullanılır:
-SearchQuery {Size -gt 30MB}E-postanın konu ve gövdesindeki metni aynı anda arayabilirsiniz. Örneğin, konusunda "Yeni Yıl" veya e-posta gövdesinde "brendi" geçen tüm mesajları bulup silelim.
Search-Mailbox k.peterson -SearchQuery {Subject:"RE:New Year" OR body:"brandy"} -DeleteContent -ForceKind bağımsız değişkenini kullanarak posta kutularını belirli öğeler için arayabilirsiniz. Örneğin:
Toplantılar:
-SearchQuery "Kind:meetings"Kişiler:
-SearchQuery "Kind:contacts"Veya diğer Outlook öğeleri:
E-posta
Toplantılar
Görevler
notlar
Dokümanlar
Dergiler
Kişiler
BEN
E-postaları belirli alıcı ve gönderene göre arama:
-SearchQuery 'from:"ceo@a-d.site" AND to:"support-team@a-d.site"'Ekli e-postalar:
-SearchQuery 'hasattachment:true'Okunan e-postalar:
-SearchQuery 'isread:false'E-postaları boyuta göre arayın:
-SearchQuery 'size>300000'
Ek olarak belirli dosyaya sahip iletileri arayabilirsiniz:
-SearchQuery 'attachment:"annual_report2021.pdf"'Veya dosya türüne göre:
-SearchQuery 'attachment -like:"*.docx"'Gönderme/alınma tarihine göre arama yapabilirsiniz, ancak birkaç nüans vardır. Bir tarihi arama kriteri olarak kullanırken, Exchange Sunucunuzun bölgesel ayarlarını göz önünde bulundurmalısınız. Örneğin, 22 Şubat 2022 aşağıdaki yollardan biriyle belirtilebilir:
22/02/2022
02/22/2022
22-Şubat-2022
22/Şubat/2022
Ve hatayı görürseniz "
The KQL parser threw an exception…”-Ara-Posta Kutusu komutunu çalıştırırken, yanlış tarih formatını kullanıyorsunuz demektir.
Belirli bir günde gönderilen e-postaları aramak için şu sorguyu kullanın:
-SearchQuery sent:02/22/2022Tarih aralığını belirtmeniz gerekiyorsa (belirli bir süre içinde alınan e-posta öğelerini arıyorsunuz):
-SearchQuery {Received:01/04/2022..02/20/2022}İşte başka bir örnek. 9 Mayıs'tan sonra gelen e-postaları arayalım:
-SearchQuery {Received:> $('05/09/2021')}New-ComplianceSearch: Exchange'de E-postalar Nasıl Aranır ve Silinir?
Exchange 2016/2019 ve Exchange Online'da (Microsoft 365), New-ComplianceSearch ve New-ComplianceSearchAction<'ı kullanarak kullanıcı posta kutularındaki e-posta iletilerini hızlı bir şekilde aramak ve silmek için yeni yöntemi kullanabilirsiniz. cmdlet'leri.
Microsoft, kullanımdan kaldırılan Search-Mailbox komutu yerine Exchange'de e-posta aramak için bu cmdlet'lerin kullanılmasını önerir.
M365 Güvenlik ve Uyumluluk Merkezine bağlanın:
Connect-IPPSSessionBelirli bir konuya, gönderene ve tarihe sahip e-postalar için posta kutularını aramaya çalışalım.
$Sender = "max@a-d.site"
$StartTime = "02/20/2022"
$EndTime = "02/22/2021"
$Subject = "report2022"Belirtilen ölçütlere göre bir e-posta arama görevi oluşturmak için şunu çalıştırın:
New-ComplianceSearch -Name ContentSearch_Report2022 -ExchangeLocation all -ContentMatchQuery "sent>=$($StartTime) AND sent<=$($EndTime) AND sender:$($Sender) AND subject:$($Subject)"Search-Mailbox cmdlet'indeki -SearchQuery seçeneklerine benzer şekilde -ContentMatchQuery özniteliğinde arama ölçütleri belirleyebilirsiniz.
Genellikle bu noktada bir hata oluşur:
New-ComplianceSearchAction: The term 'New-ComplianceSearchAction' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.Tüm Exchange rollerini yukarıda açıklandığı gibi atadığınızı doğrulayın.
Geçerli PowerShell oturumunu kapatın ve yeniden bağlanın:
Get-PSSession | Remove-PSSessionBu işi çalıştırmak için:
Start-ComplianceSearch -Identity ContentSearch_Report2022Yapılmasını beklemek zorundasın. Geçerli arama durumunu şu şekilde alabilirsiniz:
Get-ComplianceSearch -Identity ContentSearch_Report2022| FL name,items,size,jobprogress,statusArama sonuçlarını Önizleme modunda konsola yazdırmak için:
New-ComplianceSearchAction -SearchName ContentSearch_Report2022 -Preview
(Get-ComplianceSearchAction ContentSearch_Report2022| Select-Object -ExpandProperty Results).Split(";")Bulunan tüm e-posta öğelerini kullanıcı posta kutularından kaldırmak istiyorsanız, -Purge seçeneğini kullanın (Exchange Online'da mevcuttur):
New-ComplianceSearchAction -SearchName ContentSearch_Report2022 -Purge -PurgeType SoftDeleteSilinen e-postaları kullanıcılar tarafından kurtarılabilir hale getirmek istiyorsanız,
-PurgeType SoftDeleteseçenek. Belirtin
-PurgeType HardDeleteöğeleri posta kutularından tamamen kaldırmak için.
Artık arama sonuçlarını silebilirsiniz:
Remove-ComplianceSearch -Identity ContentSearch_Report2022




