ค้นหารายชื่อการแจกจ่ายที่ไม่ใช้งาน (ไม่ได้ใช้) ใน Exchange/Microsoft 365
ภายในองค์กร Exchange ของคุณหรือผู้เช่า Exchange Online (Microsoft 365) คุณสามารถสร้างกลุ่มการแจกจ่าย (รายการการแจกจ่าย, DL) ได้หลายร้อยกลุ่ม รายชื่อการแจกจ่ายที่ไม่ได้ใช้งานอีกต่อไปควรถูกลบออกเป็นระยะโดยผู้ดูแลระบบ Exchange ในบทความนี้ เราจะแสดงวิธีค้นหาและลบกลุ่มการแจกจ่ายที่ไม่ได้ใช้และว่างเปล่าใน Exchange
การค้นหารายชื่อการแจกจ่ายที่ไม่ได้ใช้แตกต่างจากการค้นหาผู้ใช้ AD หรือคอมพิวเตอร์ที่ไม่ได้ใช้งาน Exchange DL ไม่มีแอตทริบิวต์เช่น LastLogonDate/LastLogonTimeStamp เพื่อติดตามว่ามีการใช้วัตถุครั้งล่าสุดเมื่อใด คุณสามารถใช้บันทึกการติดตามของ Exchange เพื่อระบุว่าอีเมลถูกส่งไปยังกลุ่มการแจกจ่ายเฉพาะหรือไม่
แสดงรายการกลุ่มการแจกจ่ายว่างในการแลกเปลี่ยนกับ PowerShell
หากไม่มีผู้ใช้ในกลุ่มการแจกจ่าย เป็นไปได้ว่าไม่จำเป็นอีกต่อไป
คุณสามารถใช้ PowerShell เพื่อค้นหากลุ่มการแจกจ่ายที่ว่างเปล่าในองค์กร Exchange เชื่อมต่อกับ Exchange Server ของคุณโดยใช้ PowerShell และเรียกใช้ one-liner ต่อไปนี้:
Get-DistributionGroup -ResultSize Unlimited |Where-Object { (Get-DistributionGroupMember -Identity $_.Name -ResultSize Unlimited).Count -eq 0} | select Name, PrimarySmtpAddress
วิเคราะห์รายการผลลัพธ์ของกลุ่มการแจกจ่ายและลบ (ซ่อน) DL ที่คุณไม่ต้องการโดยใช้
Remove-DistributionGroupสั่งการ.
ในทำนองเดียวกัน คุณสามารถใช้ Get-DynamicDistributionGroup เพื่อค้นหา DL แบบไดนามิกที่ว่างเปล่า:
Get-DynamicDistributionGroup -ResultSize Unlimited | Where-Object { (Get-Recipient -RecipientPreviewFilter (Get-DynamicDistributionGroup -Identity $_.Identity).RecipientFilter).count -eq 0} | select Name, PrimarySmtpAddressวิธีค้นหากลุ่มการแจกจ่ายที่ไม่ใช้งานใน Exchange Server
Get-MessageTrackingLog cmdlet ใช้ใน Exchange Server เพื่อวิเคราะห์บันทึกการขนส่ง ตัวอย่างเช่น คุณอาจนับจำนวนข้อความอีเมลที่ส่งไปยังกลุ่มการแจกจ่ายในช่วง 90 วันที่ผ่านมาโดยใช้คำสั่งด้านล่าง:
Get-MessageTrackingLog -Start (Get-Date).AddDays(-90) -ResultSize unlimited -Recipients "dl-it_admins@a-d.site"| measure-objectคุณสามารถใช้คำสั่งต่อไปนี้เพื่อเพิ่มระยะเวลาเก็บรักษาสำหรับบันทึกการติดตามอีเมลใน Exchange Server เป็น 180 วัน:
Set-TransportService MUN-Ex01 -MessageTrackingLogMaxAge 180.00:00:00หากต้องการค้นหากลุ่มการแจกจ่ายที่ไม่ได้ใช้ คุณสามารถใช้สคริปต์ PowerShell ต่อไปนี้:
รับรายชื่อกลุ่มการแจกจ่ายทั้งหมดในโดเมนและส่งออกเป็นไฟล์ CSV:
Get-DistributionGroup | Select-Object PrimarySMTPAddress | Sort-Object PrimarySMTPAddress | Export-CSV all-exchange-dls.csv -notypeแสดงรายการ DL ที่ได้รับอีเมลในช่วง 30 วันที่ผ่านมา:
Get-MessageTrackingLog -Start (Get-Date).AddDays(-30) -EventId Expand -ResultSize Unlimited |Sort-Object RelatedRecipientAddress | Group-Object RelatedRecipientAddress |Sort-Object Name | Select-Object @{label= "PrimarySmtpAddress";expression={$_.Name}}, Count | Export-CSV exchange-active-dls.csv -notypeหากองค์กร Exchange ของคุณมีเซิร์ฟเวอร์มากกว่าหนึ่งเครื่องที่มีบทบาทการขนส่ง (คุณสามารถรับรายการได้โดยใช้
Get-TransportService) คุณจะต้องค้นหาแต่ละรายการ:
Get-MessageTrackingLog -Server Exh01 …-
จากนั้นเปรียบเทียบทั้งสองรายการและค้นหากลุ่มที่ไม่ได้ใช้งาน:
$alldl = Import-CSV -Path all-exchange-dls.csv $activedl = Import-CSV -Path exchange-active-dls.csv Compare-Object $alldl $activedl -Property PrimarySmtpAddress -SyncWindow 500 |Sort-Object PrimarySmtpAddress | Select-Object -Property PrimarySmtpAddress |Export-Csv inactive-dls.csv -NoType คุณสามารถซ่อนกลุ่มการแจกจ่ายที่ไม่ได้ใช้ใน Global Address List:
$currentdate = Get-Date $notes = "Inactive: hidden in the address list at $currentdate" $inactiveDL = Import-CSV -Path inactive-dls.| foreach-object { Set-Group -identity $_.PrimarySmtpAddress -notes $notes Set-DistributionGroup -identity $_.PrimarySmtpAddress -HiddenFromAddressListsEnabled $true }
ระบุรายชื่อการแจกจ่ายที่ไม่ได้ใช้งานใน Microsoft 365 (Exchange Online)
ใน Microsoft 365 คุณสามารถติดตามบันทึกอีเมลได้โดยใช้ Exchange Admin Center (Mail Flow -> Message Trace) หรือใช้
Start-HistoricalSearchหรือ
Get-MessageTracecmdlet ของ PowerShell คำสั่งสุดท้ายมีข้อจำกัดที่สำคัญ - อนุญาตให้คุณค้นหาเฉพาะอีเมลที่ส่งในช่วง 10 วันก่อนหน้าเท่านั้น ไม่เหมาะกับงานของเรา
ติดตั้งโมดูล Exchange Online PowerShell (EXO) และเชื่อมต่อกับผู้เช่าของคุณ:
Connect-ExchangeOnlineคำสั่งต่อไปนี้แสดงจำนวนอีเมลที่ส่งไปยังที่อยู่ SMTP ของรายชื่อการแจกจ่าย:
Start-HistoricalSearch -ReportTitle "Global Admin DL" -StartDate 04/20/2023 -EndDate 06/20/2023 -ReportType MessageTrace -RecipientAddress global_admins@ a-d.site -NotifyAddress maxb@a-d.siteมีการค้นหาประวัติสูงสุด 250 รายการต่อระยะเวลา 24 ชั่วโมงที่ผู้เช่ารายเดียวสามารถใช้ได้
ในการเริ่มค้นหา DL ที่ไม่ได้ใช้งาน คุณสามารถใช้สคริปต์ต่อไปนี้::
foreach ($group in Get-DistributionGroup)
{
Start-HistoricalSearch -ReportTitle $group.PrimarySmtpAddress -StartDate 04/20/2023 -EndDate 06/21/2023 -ReportType MessageTrace -RecipientAddress $group.PrimarySmtpAddress -NotifyAddress maxb@a-d.site
}เมื่อการค้นหาเสร็จสิ้น คุณสามารถตรวจสอบจำนวนอีเมลที่ส่งไปยัง DL:
Get-HistoricalSearch "Global Admin DL"
หากรายการข้อความว่างเปล่า (
Rows = 0) หมายความว่าไม่มีการใช้กลุ่มการแจกจ่ายใน Exchange Online ในช่วง 90 วันที่ผ่านมา รายชื่อการแจกจ่ายดังกล่าวอาจถือว่าไม่ใช้งาน
คุณสามารถใช้ Microsoft 365 Groups แทนรายชื่อการแจกจ่ายใน Exchange Online

