ค้นหาเว็บไซต์

ค้นหารายชื่อการแจกจ่ายที่ไม่ใช้งาน (ไม่ได้ใช้) ใน 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 ต่อไปนี้:

  1. รับรายชื่อกลุ่มการแจกจ่ายทั้งหมดในโดเมนและส่งออกเป็นไฟล์ CSV:

    Get-DistributionGroup | Select-Object PrimarySMTPAddress | Sort-Object PrimarySMTPAddress | Export-CSV all-exchange-dls.csv -notype
  2. แสดงรายการ 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 …
  3. จากนั้นเปรียบเทียบทั้งสองรายการและค้นหากลุ่มที่ไม่ได้ใช้งาน:

    $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
  4. คุณสามารถซ่อนกลุ่มการแจกจ่ายที่ไม่ได้ใช้ใน 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-MessageTrace

cmdlet ของ 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

บทความที่เกี่ยวข้อง