חיפוש רשימות תפוצה לא פעילות (שאינן בשימוש) ב- Exchange/Microsoft 365


בתוך ארגון Exchange או דייר Exchange Online (Microsoft 365), באפשרותך ליצור מאות קבוצות תפוצה (רשימות תפוצה, DL). רשימות תפוצה שאינן בשימוש צריכות להיות מוסרות מעת לעת על-ידי מנהל Exchange. במאמר זה, נראה לך כיצד לחפש ולמחוק קבוצות תפוצה ריקות שאינן בשימוש ב- Exchange.

חיפוש רשימות תפוצה שאינן בשימוש שונה מחיפוש משתמשים או מחשבים לא פעילים של AD. Exchange DL אינו כולל תכונה כגון LastLogonDate/LastLogonTimeStamp כדי לעקוב אחר מועד השימוש האחרון באובייקט. באפשרותך להשתמש ביומני מעקב של Exchange כדי לקבוע אם הודעות דואר אלקטרוני נשלחו לקבוצת תפוצה מסוימת.

הצגת קבוצות תפוצה ריקות ב- Exchange באמצעות PowerShell

אם אין משתמשים בקבוצת התפוצה, סביר להניח שאין בה עוד צורך.

באפשרותך להשתמש ב- PowerShell כדי לאתר קבוצות תפוצה ריקות בארגון Exchange. התחבר לשרת Exchange באמצעות PowerShell והפעל את הקו האחד הבא:

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

cmdlet Get-MessageTrackingLog משמש ב- 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

כדי למצוא קבוצות תפוצה שאינן בשימוש, באפשרותך להשתמש בקובץ ה-script הבא של 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. באפשרותך להסתיר קבוצות תפוצה שאינן בשימוש ברשימת הכתובות הכללית:

    $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 (זרימת דואר -> מעקב אחר הודעות) או באמצעות

Start-HistoricalSearch

או

Get-MessageTrace

רכיבי cmdlet של PowerShell. לפקודה האחרונה יש מגבלה משמעותית - היא מאפשרת לך לחפש רק הודעות דואר אלקטרוני שנשלחו בעשרת הימים הקודמים. זה לא מתאים למשימה שלנו.

התקן את מודול 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 במקום ברשימות תפוצה ב- Exchange Online.