Cari-Kotak Pesan Cari dan hapus setiap email dari kotak surat Exchange

Server Exchange memungkinkan administrator untuk mencari kotak pesan pengguna di database dan menghapus surat-surat tertentu (atau item lain) dari kotak surat. Misalnya, pengguna melakukan kesalahan dan secara tidak sengaja mengirim data pribadi ke pengguna lain di organisasi dan tidak berhasil menarik pesan di Outlook. Departemen Keamanan Informasi mengharuskan Anda, sebagai administrator Exchange, menghapus email ini dari semua pengguna di organisasi Exchange Anda. Di artikel ini, kami akan menunjukkan bagaimana Anda dapat menggunakan PowerShell untuk mencari kotak surat pengguna Exchange (dengan kriteria berbeda) dan menghapus pesan individual dari pengguna tertentu atau semua pengguna Exchange. Teknik yang dijelaskan berlaku untuk Exchange 2016, 2013, dan 2010..

Konten:

  • Tetapkan izin untuk mencari kotak surat Exchange
  • Kami menggunakan cmdlet Search-Mailbox untuk menemukan dan menghapus surat di kotak surat Exchange
  • Contoh Kueri Pencarian Kotak Pesan SearchQuery Exchange
  • Keterbatasan kotak pesan pencarian
  • Temukan dan hapus email dengan cepat di Exchange 2016 menggunakan New-ComplianceSearch

Tetapkan izin untuk mencari kotak surat Exchange

Akun administrator yang mencari dan menghapus item harus diberi peran sebagai berikut:

  • Ekspor impor kotak surat
  • Pencarian kotak surat

Anda dapat menetapkan peran melalui EAC atau dengan perintah PowerShell berikut:

New-ManagementRoleAssignment -User itpro -Role "Ekspor Impor Kotak Pesan"
New-ManagementRoleAssignment -User itpro -Role "Pencarian Kotak Pesan"

Setelah menetapkan peran, Anda harus memulai ulang konsol Exchange Management Shell.

Kami menggunakan cmdlet Search-Mailbox untuk menemukan dan menghapus surat di kotak surat Exchange

Anda juga dapat mencari surat di kotak surat pengguna melalui Exchange Control Panel / Exchange Admin Center, namun metode pencarian ini agak lambat dan tidak memungkinkan Anda untuk menghapus surat. Jauh lebih mudah mencari menggunakan PowerShell.

Anda dapat menggunakan cmdlet untuk mencari pesan di kotak pengguna Cari kotak surat, yang memungkinkan, sesuai dengan kriteria tertentu, untuk menemukan surat di semua atau kotak surat tertentu, menyalin item yang ditemukan ke kotak surat lain atau menghapusnya.

Pertama, kami akan mencari tahu cara mencari menggunakan Search-Mailbox..
Untuk mencari di kotak surat tertentu dengan subjek tertentu, jalankan perintah:
Search-Mailbox -Identity vasia -SearchQuery 'Subject:' Laporan Tahunan ''
Untuk mencari semua kotak surat di organisasi, gunakan perintah:
Get-Mailbox -ResultSize tidak terbatas | Search-Mailbox -SearchQuery 'Subject:' Laporan Tahunan ''

Untuk menyalin hasil pencarian ke kotak surat dan folder tertentu, gunakan parameter TargetMailbox dan TargetFolder. Dengan demikian, setelah pencarian selesai, Anda dapat secara manual menggunakan Outlook atau OWA untuk melihat huruf-huruf yang ditemukan. Misalkan kita perlu mencari huruf dalam daftar pengguna (terkandung dalam file teks users.txt) dan menyalin huruf yang ditemukan di folder kotak surat tertentu, lakukan:

get-content users.txt | Get-Mailbox -ResultSize tidak terbatas | Search-Mailbox -SearchQuery 'Subject: Laporan Tahunan' -TargetMailbox sec_mbx -TargetFolder "ExSearchFolder"

Parameter -Secara masuk akal berarti Anda hanya perlu mengevaluasi hasil pencarian tanpa menyalin hasil pencarian ke kotak target dan tanpa menghapus item. Saat menggunakan argumen ini, laporan dengan hasil pencarian akan dikirim ke kotak surat target yang ditentukan. Laporan ini adalah file csv yang diarsipkan yang mencantumkan kotak yang cocok dengan kriteria pencarian..

Anda dapat mengevaluasi hasil pencarian menggunakan parameter -Perkirakan Hasil Hanya, perhatikan bahwa saat menggunakan argumen ini Anda tidak perlu menentukan kotak surat dan folder target

Untuk menghapus huruf yang ditemukan, Anda perlu menggunakan opsi -Menghapus konten, untuk menghapus permintaan konfirmasi untuk menghapus informasi, tambahkan parameter -Paksaan.

Hapus semua huruf dari vasia pengguna di semua kotak surat di server Exchnage tertentu:

Get-Mailbox -Server msk-mdb1 -ResultSize tak terbatas | Cari-Kotak Surat -Hasil Pencarian 'dari: "[email protected]"' -DeleteContent -Force

Sebelum menghapus surat dari kotak surat menggunakan saklar -DeleteContent, kami sangat menyarankan Anda melihat surat yang ditemukan oleh kriteria yang ditentukan menggunakan argumen -EstimateResultOnly atau -LogOnly.

Untuk hanya mencari item yang dihapus, tambahkan parameter -CariDumpsterHanya (untuk mengecualikan pencarian pada item yang dihapus, tambahkan -SearchDumpster: $ false parameter). Jika Anda perlu mengecualikan arsip kotak surat, gunakan parameter -DoNotIncludeArchive.

Contoh Kueri Pencarian Kotak Pesan SearchQuery Exchange

Mari kita lihat contoh kueri pemilihan item surat menggunakan parameter SearchQuery. Parameter SearchQuery menangani kueri dalam bahasa KQL (Bahasa Kata Kunci Kueri) - https://docs.microsoft.com/en-us/sharepoint/dev/general-development/keyword-query-language-kql-syntax-reference.

Hapus semua huruf dengan kata kunci "Rahasia" di subjek dari semua pengguna bukan dari domain Anda:

Search-Mailbox -Identity vasia -SearchQuery 'Subject: "Secret" dan from "winitpro.ru" "-DeleteContent

Temukan dan hapus semua huruf dengan lampiran lebih dari 20MB:

Search-Mailbox -Identity vasia -SearchQuery 'hasattachment: true AND Size> 20971520' -DeleteContent

Kiat. Ukuran huruf ditunjukkan dalam byte, dan ukuran seluruh huruf, dan bukan hanya lampiran, diperhitungkan. Anda dapat menentukan ukuran dalam megabyte, dalam hal ini sintaks berikut digunakan: -SearchQuery Ukuran -gt 20MB.

Anda dapat mencari teks di tajuk dan baris subjek surat secara bersamaan, misalnya, kami akan menemukan dan menghapus semua huruf yang mengandung frasa "Tahun Baru" di baris subjek atau frasa "beli brendi".

Cari-Kotak Pesan vasia -SearchQuery Subjek: "RE: Tahun Baru" ATAU badan: "pembelian brandy" -HapuseteIsi -Force

Anda dapat mencari item tertentu dalam kotak menggunakan argumen Baik hati, misalnya:

Rapat: -SearchQuery "Jenis: rapat"
Rincian kontak: -SearchQuery "Jenis: kontak"

Atau elemen lainnya:

  • Email - surat
  • Rapat - Rapat
  • Tugas - Tugas
  • Catatan - catatan
  • Documents - dokumen
  • Jurnal - Majalah
  • Kontak - kontak
  • Pesan IM - messenger

Cari surat berdasarkan pengirim dan penerima tertentu

-CariQuery 'dari: "[email protected]" DAN ke: "[email protected]"'

Anda dapat mencari surat dengan file tertentu di lampiran:

-LampiranQueryQuery: "secret.pdf" '

Atau menurut jenis file:

-SearchQuery 'attachment -like: "*. Docx"'

Anda dapat mencari berdasarkan tanggal pengiriman / penerimaan surat, tetapi ada beberapa nuansa. Saat menggunakan tanggal sebagai kriteria pencarian, pertimbangkan pengaturan regional server Exchange. Misalnya, tanggal 20 Juli 2018 dapat menunjukkan:

  • 07/20/2018
  • 20/07/2018
  • 20-Jul-2018
  • 20/2018 Juli

Dan jika Anda mendapatkan kesalahan "Pengurai KQL melemparkan pengecualian ..." ketika Anda menjalankan perintah Search-Mailbox, maka Anda menggunakan format waktu yang salah.

Untuk mencari email yang dikirim pada hari tertentu, gunakan kueri:

-SearchQuery terkirim: 07/20/2018

Jika Anda perlu menentukan rentang tanggal (cari surat yang diterima dalam periode waktu tertentu):

-SearchQuery Diterima: 20/20/2018 ... 07/20/2018

Contoh lain. Kami mencari surat yang diterima sebelum 7 Juli:

-SearchQuery Diterima:> $ ('07 / 07/2018 ')

Kiat. Dalam versi Exchange (Rusia) yang dilokalkan, Anda perlu menggunakan kunci Rusia di argumen KQL. Misalnya, untuk mencari surat yang diterima dan dikirim dalam periode yang ditentukan:

-SearchQuery terkirim: "01/07/2018 ... 07/20/2018" DAN menerima: "01/07/2018 ... 07/20/2018

Karenanya, Anda perlu menggunakan konstruksi seperti itu di SearchQuery:

Ancaman. Itu sebabnya saya tidak ingin menggunakan produk versi Rusia!

Keterbatasan kotak pesan pencarian

Tim Search-Mailbox memiliki batasan signifikan, hanya dapat mengembalikan 10.000 item, setelah itu akan mengembalikan kesalahan

Mengirim data ke perintah jarak jauh gagal dengan pesan kesalahan berikut: Total data yang diterima dari klien jarak jauh melebihi maksimum yang diizinkan. Maksimal yang diizinkan adalah 524288000.

Oleh karena itu, untuk menghapus lebih banyak item, Anda perlu menjalankan cmdlet Cari kotak surat beberapa kali, atau pecah kotak menjadi grup dengan basis data email atau server.

Get-Mailbox -Database mskdb | Cari-Kotak Surat -Hasil Pencarian 'dari: [email protected]' -Hapus Konten -Paksa

Masalah lain dengan Search-Mailbox adalah kinerja yang buruk. Pencarian untuk organisasi besar bisa memakan waktu beberapa hari.

Temukan dan hapus email dengan cepat di Exchange 2016 menggunakan New-ComplianceSearch

Exchange 2016 memperkenalkan mekanisme baru untuk mencari dan menghapus surat dengan cepat di kotak surat pengguna.

Dengan menggunakan perintah berikut, Anda dapat secara signifikan mempersempit pencarian Anda:

New-ComplianceSearch -Name FastSearch1 -ExchangeLocation all -ContentMatchQuery 'from: "[email protected]"'
Start-ComplianceSearch -Identity FastSearch1

Tim-tim ini mengerjakan beberapa ribu kotak dalam beberapa menit.

Kami mendapatkan daftar kotak yang termasuk dalam kriteria pencarian:

$ search = Dapatkan-ComplianceSearch -Identity FastSearch1
$ results = $ search.SuccessResults
$ mbxs = @ ()
$ lines = $ results -split '[\ r \ n] +'
foreach ($ baris dalam $ baris)

if ($ line -match 'Location: (\ S +) ,. + Jumlah item: (\ d +)' -dan $ cocok [2] -gt 0)

$ mbxs + = $ cocok [1]

Sekarang Anda dapat mulai dengan menghapus huruf menggunakan Search-Mailbox hanya di kotak surat yang ditemukan:

$ mbxs | Get-Mailbox | Cari-Kotak Surat -HasilQuery 'dari: "[email protected]"' -DeleteContent -Force

Total waktu untuk mencari dan menghapus surat berkurang beberapa kali, terutama di organisasi besar.

Sekarang Anda dapat menghapus hasil pencarian:

Remove-ComplianceSearch -Identity FastSearch1