ค้นหาและลบอีเมลจากกล่องจดหมายของผู้ใช้บน Exchange Server (Microsoft 365) ด้วย PowerShell
ใน Exchange Server คุณสามารถใช้ cmdlet ของ PowerShell Search-Mailbox หรือ New-ComplianceSearch (พร้อมใช้งานใน Exchange Server และ Exchange Online/Microsoft 365 เวอร์ชันใหม่กว่า) เพื่อค้นหาและ ลบรายการอีเมลออกจากกล่องจดหมายของผู้ใช้ ตัวอย่างเช่น ผู้ใช้ส่งข้อมูลส่วนตัวไปยังเพื่อนร่วมงานในองค์กรโดยไม่ได้ตั้งใจ และไม่มีเวลาเรียกคืนข้อความใน Outlook แผนกรักษาความปลอดภัยของข้อมูลกำหนดให้ผู้ดูแลระบบ Exchange ลบอีเมลส่วนตัวนี้ออกจากกล่องจดหมายของผู้ใช้ทั้งหมดในองค์กร/ผู้เช่า Exchange ของคุณ
บทความนี้ใช้กับ Exchange Server 2019/2016/2013 และ 2010 ภายในองค์กร รวมถึง Exchange Online บนระบบคลาวด์ (Microsoft 365)
สิทธิ์ที่จำเป็นในการค้นหากล่องจดหมาย Exchange
ต้องกำหนดบทบาทต่อไปนี้ให้กับบัญชีผู้ดูแลระบบที่ค้นหาและลบรายการกล่องจดหมาย:
นำเข้ากล่องจดหมาย ส่งออก
ค้นหากล่องจดหมาย
คุณสามารถกำหนดบทบาทโดยใช้ EAC หรือ PowerShell เชื่อมต่อกับ Exchange Server ภายในองค์กรของคุณโดยใช้ PowerShell และเรียกใช้คำสั่ง:
New-ManagementRoleAssignment -User j.anderson -Role "Mailbox Import Export"
New-ManagementRoleAssignment -User j.anderson -Role "Mailbox Search”ใน Exchange Online คุณต้องกำหนดบทบาทต่อไปนี้:
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.siteเพิ่มบัญชีของคุณลงในกลุ่ม ผู้ดูแลระบบ eDiscovery ในศูนย์การปฏิบัติตามข้อบังคับ Microsoft 365
เคล็ดลับ คุณสามารถใช้โมดูล Exchange Online PowerShell v2 (EXO V2) เพื่อเชื่อมต่อกับ Exchange Online
หลังจากกำหนดบทบาทแล้ว ให้เริ่มเซสชัน PowerShell ใหม่
ค้นหากล่องจดหมาย: ค้นหาและลบข้อความจากกล่องจดหมายของผู้ใช้ Exchange
คุณสามารถใช้เว็บอินเทอร์เฟซ Exchange Admin Center (EAC) หรือ กล่องจดหมายค้นหา PowerShell cmdlet เพื่อค้นหารายการอีเมลในกล่องจดหมายของผู้ใช้ คำสั่งนี้ทำให้คุณสามารถค้นหาอีเมลในกล่องเมลตามเกณฑ์ที่กำหนด คัดลอกรายการที่พบไปยังกล่องเมลอื่น หรือลบออก
หากต้องการค้นหากล่องจดหมายของผู้ใช้สำหรับอีเมลที่มีหัวเรื่องเฉพาะ ให้รันคำสั่ง:
Search-Mailbox -Identity k.peterson -SearchQuery 'Subject:"Annual Report"'เมื่อต้องการค้นหากล่องจดหมายทั้งหมดในองค์กร Exchange ให้ใช้คำสั่งต่อไปนี้:
Get-Mailbox -ResultSize unlimited | Search-Mailbox -SearchQuery 'Subject:"Annual Report"'เมื่อใช้ cmdlet กล่องจดหมายค้นหาใน Exchange Online (Microsoft 365) คำเตือนจะปรากฏขึ้น:
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 แนะนำให้ใช้ที่มีประสิทธิภาพมากขึ้น
New-ComplianceSearchและ
New-ComplianceSearchActioncmdlets ค้นหากล่องจดหมาย (กล่าวถึงด้านล่าง)
หากต้องการคัดลอกผลการค้นหาไปยังกล่องจดหมายและโฟลเดอร์ที่ต้องการ ให้ใช้พารามิเตอร์ TargetMailbox หรือ TargetFolder ซึ่งจะช่วยให้คุณสามารถดูอีเมลที่พบใน Outlook ได้ด้วยตนเองหลังจากการค้นหาเสร็จสิ้น สมมติว่าคุณต้องการค้นหาข้อความอีเมลในรายการกล่องจดหมาย (ระบุใน users.txt) และคัดลอกรายการที่พบไปยังโฟลเดอร์ในกล่องจดหมายที่ระบุ:
get-content users.txt | Get-Mailbox -ResultSize unlimited | Search-Mailbox -SearchQuery 'Subject:"Annual Report"' -TargetMailbox sec_dept -TargetFolder "ExchSearchResult”ตัวเลือก -LogOnly -LogLevel Full หมายความว่าจะต้องประเมินผลการค้นหาเท่านั้นโดยไม่คัดลอกรายการไปยังกล่องจดหมายเป้าหมายหรือลบข้อความ ถ้าใช้อาร์กิวเมนต์นี้ รายงานที่มีผลการค้นหาจะถูกส่งไปยังกล่องจดหมายเป้าหมายที่ระบุ รายงานคือไฟล์ CSV ที่เก็บถาวรซึ่งแสดงรายการกล่องจดหมายที่ตรงตามเกณฑ์การค้นหา
โปรดทราบว่ารายงานที่ได้รับมีข้อความอีเมลสถานะอ่านแล้ว (
Read: True/False).
คุณสามารถประมาณผลการค้นหาโดยใช้พารามิเตอร์ -EstimateResultOnly โปรดทราบว่าเมื่อใช้ตัวเลือกนี้ คุณไม่จำเป็นต้องระบุกล่องจดหมายหรือโฟลเดอร์เป้าหมาย
Get-Mailbox | Search-Mailbox -SearchQuery 'Subject:"report"' -EstimateResultOnly|select Identity,ResultItemsCount,ResultItemsSize| Where-Object ResultItemsCount -gt 0
หากต้องการลบรายการอีเมลที่พบ ให้ใช้พารามิเตอร์ -DeleteContent เพิ่มพารามิเตอร์ -Force เพื่อข้ามข้อความแจ้งการยืนยัน
มาลบข้อความอีเมลทั้งหมดจากผู้ส่ง k.peterson@a-d.site ในกล่องจดหมายทั้งหมดบนเซิร์ฟเวอร์ Exchange เฉพาะ:
Get-Mailbox -Server berl-ex1 -ResultSize unlimited | Search-Mailbox -SearchQuery 'from:"k.peterson@a-d.site"' -DeleteContent -Forceก่อนลบรายการอีเมลออกจากกล่องจดหมายโดยใช้พารามิเตอร์ -DeleteContent เราขอแนะนำอย่างยิ่งให้คุณดูอีเมลที่พบโดยใช้
-EstimateResultOnlyหรือ
-LogOnlyข้อโต้แย้ง
หากต้องการค้นหาเฉพาะรายการที่ถูกลบ ให้เพิ่มพารามิเตอร์ -SearchDumpsterOnly (หากต้องการยกเว้นการค้นหาในรายการที่ถูกลบ ให้เพิ่ม
-SearchDumpster:$falseการโต้แย้ง). หากคุณต้องการแยกกล่องจดหมายเก็บถาวรออกจากผลการค้นหา ให้ใช้พารามิเตอร์ -DoNotIncludeArchive
Search-Mailbox cmdlet มีข้อจำกัดที่สำคัญ: สามารถส่งคืนได้เพียง 10,000 องค์ประกอบเท่านั้น หากเกินขีดจำกัดนี้ ระบบจะส่งกลับข้อผิดพลาด:
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.ในการลบรายการเพิ่มเติม คุณจะต้องเรียกใช้ cmdlet กล่องจดหมายค้นหา หลายครั้ง หรือแบ่งกล่องจดหมายออกเป็นกลุ่มตามฐานข้อมูลกล่องจดหมายหรือเซิร์ฟเวอร์ Exchange
Get-Mailbox -Database berl-ex1 | Search-Mailbox -SearchQuery 'from:spam@spambot.org' -DeleteContent -Forceปัญหา cmdlet Search-Mailbox อีกประการหนึ่งคือประสิทธิภาพต่ำ ในกรณีของบริษัทขนาดใหญ่ การค้นหาอาจใช้เวลาหลายวัน ใน Exchange Server และ Microsoft 365 เวอร์ชันใหม่ วิธีที่ดีที่สุดคือใช้ New-ComplianceSearch cmdlet (กล่าวถึงด้านล่าง) เพื่อค้นหาอีเมล
ตัวอย่างการค้นหาคำหลักสำหรับกล่องจดหมาย Exchange
มาดูตัวอย่างข้อความค้นหาเพื่อค้นหารายการอีเมลโดยใช้พารามิเตอร์ SearchQuery พารามิเตอร์ SearchQuery ประมวลผลข้อความค้นหาในรูปแบบ KQL (ภาษาคำค้นหาคำหลัก) https://docs.microsoft.com/en-us/sharepoint/dev/general-development/keyword-query-language-kql -syntax-อ้างอิง
หากต้องการค้นหาและลบอีเมลทั้งหมดที่มีคำหลัก "ความลับ" ในหัวเรื่องจากผู้ใช้ทั้งหมดที่ไม่ได้มาจากโดเมนของคุณ:
Search-Mailbox -Identity k.peterson -SearchQuery 'Subject:"Secret" and from<>”a-d.site”' -DeleteContentเมื่อใช้ตัวดำเนินการเชิงตรรกะ OR และ AND คุณสามารถรวมเงื่อนไขการค้นหาอีเมลที่ซับซ้อนมากขึ้นได้
ค้นหาและลบอีเมลทั้งหมดที่มีไฟล์แนบขนาดใหญ่กว่า 20 MB:
Search-Mailbox -Identity k.peterson -SearchQuery 'hasattachment:true AND Size >20971520' -DeleteContentเคล็ดลับ ขนาดของรายการอีเมลระบุเป็นไบต์ และจะนับขนาดของรายการอีเมลทั้งหมด ไม่ใช่แค่ไฟล์แนบ คุณยังสามารถระบุขนาดเป็นเมกะไบต์ ในกรณีนี้ จะใช้ไวยากรณ์ต่อไปนี้:
-SearchQuery {Size -gt 30MB}คุณสามารถค้นหาข้อความในหัวข้อและเนื้อหาของอีเมลได้พร้อมกัน ตัวอย่างเช่น ลองค้นหาและลบข้อความทั้งหมดที่มีคำว่า “ปีใหม่ ” ในหัวเรื่องหรือ “บรั่นดี ” ในเนื้อหาอีเมล
Search-Mailbox k.peterson -SearchQuery {Subject:"RE:New Year" OR body:"brandy"} -DeleteContent -Forceคุณสามารถค้นหากล่องจดหมายสำหรับรายการเฉพาะโดยใช้อาร์กิวเมนต์ ชนิด ตัวอย่างเช่น:
การประชุม:
-SearchQuery "Kind:meetings"ติดต่อ:
-SearchQuery "Kind:contacts"หรือองค์ประกอบอื่นๆ ของ Outlook:
อีเมล
การประชุม
งาน
หมายเหตุ
เอกสาร
วารสาร
ติดต่อ
ฉัน
ค้นหาอีเมลโดยระบุผู้รับและผู้ส่ง:
-SearchQuery 'from:"ceo@a-d.site" AND to:"support-team@a-d.site"'อีเมลพร้อมไฟล์แนบ :
-SearchQuery 'hasattachment:true'อีเมลที่อ่านแล้ว:
-SearchQuery 'isread:false'ค้นหาอีเมลตามขนาด:
-SearchQuery 'size>300000'
คุณสามารถค้นหาข้อความที่มีไฟล์เฉพาะเป็นไฟล์แนบได้:
-SearchQuery 'attachment:"annual_report2021.pdf"'หรือตามประเภทไฟล์:
-SearchQuery 'attachment -like:"*.docx"'คุณสามารถค้นหาตามวันที่ส่ง/รับ แต่มีความแตกต่างหลายประการ เมื่อใช้วันที่เป็นเกณฑ์การค้นหา คุณต้องพิจารณาการตั้งค่าภูมิภาคของ Exchange Server ของคุณ ตัวอย่างเช่น อาจระบุ 22 กุมภาพันธ์ 2022 ด้วยวิธีใดวิธีหนึ่งต่อไปนี้:
22/02/2022
02/22/2022
22-ก.พ.-2565
22/กุมภาพันธ์/2565
และถ้าคุณเห็นข้อผิดพลาด “
The KQL parser threw an exception…” เมื่อรันคำสั่ง Search-Mailbox แสดงว่าคุณใช้รูปแบบวันที่ไม่ถูกต้อง
หากต้องการค้นหาอีเมลที่ส่งในวันที่ระบุ ให้ใช้ข้อความค้นหานี้:
-SearchQuery sent:02/22/2022หากคุณต้องการระบุช่วงวันที่ (คุณกำลังมองหารายการอีเมลที่ได้รับภายในระยะเวลาที่กำหนด):
-SearchQuery {Received:01/04/2022..02/20/2022}นี่เป็นอีกตัวอย่างหนึ่ง มาค้นหาอีเมลที่ได้รับหลังวันที่ 9 พฤษภาคมกัน:
-SearchQuery {Received:> $('05/09/2021')}New-ComplianceSearch: จะค้นหาและลบอีเมลใน Exchange ได้อย่างไร
ใน Exchange 2016/2019 และ Exchange Online (Microsoft 365) คุณสามารถใช้วิธีใหม่เพื่อค้นหาและลบข้อความอีเมลในกล่องจดหมายของผู้ใช้ได้อย่างรวดเร็วโดยใช้ New-ComplianceSearch และ New-ComplianceSearchAction< cmdlets
Microsoft ขอแนะนำให้ใช้ cmdlets เหล่านี้เพื่อค้นหาอีเมลใน Exchange แทนคำสั่ง Search-Mailbox ที่เลิกใช้แล้ว
เชื่อมต่อกับ M365 Security & Compliance Center:
Connect-IPPSSessionมาลองค้นหากล่องจดหมายเพื่อหาอีเมลที่มีหัวเรื่อง ผู้ส่ง และวันที่ที่เฉพาะเจาะจง
$Sender = "max@a-d.site"
$StartTime = "02/20/2022"
$EndTime = "02/22/2021"
$Subject = "report2022"หากต้องการสร้างงานค้นหาอีเมลตามเกณฑ์ที่ระบุ ให้รัน:
New-ComplianceSearch -Name ContentSearch_Report2022 -ExchangeLocation all -ContentMatchQuery "sent>=$($StartTime) AND sent<=$($EndTime) AND sender:$($Sender) AND subject:$($Subject)"คุณสามารถระบุเกณฑ์การค้นหาในแอตทริบิวต์ -ContentMatchQuery ซึ่งคล้ายกับตัวเลือก -SearchQuery ใน Search-Mailbox cmdlet
บ่อยครั้งที่เกิดข้อผิดพลาดขึ้น ณ จุดนี้:
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.ตรวจสอบว่าคุณได้มอบหมายบทบาท Exchange ทั้งหมดตามที่อธิบายไว้ข้างต้น
ปิดเซสชัน PowerShell ปัจจุบันและเชื่อมต่อใหม่:
Get-PSSession | Remove-PSSessionในการรันงานนี้:
Start-ComplianceSearch -Identity ContentSearch_Report2022คุณต้องรอให้มันเสร็จสิ้น คุณจะได้รับสถานะการค้นหาปัจจุบันดังนี้:
Get-ComplianceSearch -Identity ContentSearch_Report2022| FL name,items,size,jobprogress,statusหากต้องการพิมพ์ผลการค้นหาไปยังคอนโซลในโหมดดูตัวอย่าง:
New-ComplianceSearchAction -SearchName ContentSearch_Report2022 -Preview
(Get-ComplianceSearchAction ContentSearch_Report2022| Select-Object -ExpandProperty Results).Split(";")หากคุณต้องการลบรายการอีเมลทั้งหมดที่พบออกจากกล่องจดหมายของผู้ใช้ ให้ใช้ตัวเลือก -Purge (มีให้ใช้งานใน Exchange Online):
New-ComplianceSearchAction -SearchName ContentSearch_Report2022 -Purge -PurgeType SoftDeleteหากคุณต้องการให้ผู้ใช้กู้คืนอีเมลที่ถูกลบได้ ให้ใช้
-PurgeType SoftDeleteตัวเลือก. ระบุ
-PurgeType HardDeleteเพื่อลบรายการออกจากกล่องจดหมายอย่างสมบูรณ์
ตอนนี้คุณสามารถลบผลการค้นหา:
Remove-ComplianceSearch -Identity ContentSearch_Report2022




