קבלת כל כתובות ה- SMTP (דואר אלקטרוני) באמצעות PowerShell ב- Exchange


מעת לעת, ייתכן שיהיה עליך לייצא את הרשימה המלאה של כתובות דואר אלקטרוני בארגון Exchange שלך. במאמר זה נראה כיצד להשיג ולייצא את כל כתובות ה- SMTP שהוקצו לקובץ CSV ב- Exchange Server או Microsoft 365 (Exchange Online) באמצעות PowerShell.

התחבר לארגון Exchange שלך:

  • באפשרותך להשתמש במודול מעטפת ניהול Exchange (EMS) כדי לנהל שרת Exchange מקומי, או להתחבר ל- Exchange מרחוק ממסוף PowerShell רגיל;

  • השתמש במודול Exchange Online PowerShell (EXO) כדי לחבר דייר Microsoft 365. באפשרותך להשתמש באימות מבוסס אישור כדי להיכנס ל- Exchange Online מתוך PowerShell.

כדי להציג את כל כתובות ה- SMTP הראשיות והנוספות עבור תיבת דואר ספציפית של Exchange, הפעל פקודה זו:

Get-Mailbox testmax |Select-Object DisplayName,PrimarySmtpAddress,EmailAddresses|fl

  • ה

    SMTP

    כתובת באותיות רישיות מכילה את כתובת הדואר האלקטרוני הראשית

  • האותיות הקטנות

    smtp

    ערכים הם כתובות הדואר האלקטרוני המשניות (כינוי).

התכונה proxyAddresses משמשת להגדרת כתובת מסירת הדואר האלקטרוני ב- Active Directory המקומי.

כפי שניתן לראות, למשתמש מוקצות מספר כתובות SMTP נוספות, המאוחסנות בתכונת המחרוזת EmailAddresss. ייתכנו סוגים אחרים של כתובות בתכונה זו, כך שכדי לקבל רשימה של כל כתובות ה- SMTP של תיבת דואר, הפעל את הפקודה הבאה:

Get-Mailbox testmax | Select-Object DisplayName,PrimarySmtpAddress, @{Name="SMTPAliases";Expression={($_.EmailAddresses | Where-Object { $_ -match "^smtp:" } | ForEach-Object {$_ -replace "smtp:",""}) -join "," }}

הפקודה הבאה מציגה את כל הכתובות הראשיות והכינויים עבור כל תיבות הדואר של המשתמשים ותיבות הדואר המשותפות ב- Exchange ומייצאת את התוצאות לקובץ CSV:

Get-Mailbox -ResultSize Unlimited | Select-Object DisplayName,PrimarySmtpAddress, @{Name="SMTPAliases";Expression={($_.EmailAddresses | Where-Object { $_ -match "^smtp:" } | ForEach-Object {$_ -replace "smtp:",""}) -join "," }} | Export-Csv "C:\PS\List-All-SMTP-Addresses.csv" -NoTypeInformation -Encoding UTF8

ה- cmdlet Get-Mailbox מציג רק מידע אודות משתמשים ותיבות דואר משותפות.

ב- Active Directory (או Azure AD), ייתכנו סוגים אחרים של אובייקטים שהוקצו להם כתובות SMTP (אובייקטים מותאמי דואר): קבוצות תפוצה, אנשי קשר וקבוצות Microsoft 365 (קבוצות מאוחדות במזהה כניסה). השתמש ב- cmdlet Get-Recipient כדי לפרט את כתובות ה- SMTP של כל האובייקטים בארגון/דייר Exchange:

Get-Recipient -ResultSize Unlimited | Select-Object DisplayName, RecipientType, PrimarySmtpAddress, @{Name="SMTPAliases";Expression={($_.EmailAddresses | Where-Object { $_ -match "^smtp:" } | ForEach-Object {$_ -replace "smtp:",""}) -join "," }}

במקרה זה, יש לנו רשימה של כתובות SMTP של כל סוגי אובייקטי Exchange. כדי לייצא רק כתובות SMTP מסוג אובייקט מסוים, הוסף את הפרמטר הבא ל- cmdlet הראשון

Get-Recipient -ResultSize Unlimited -RecipientType your_object_type | …

סוגים אפשריים של אובייקטי Exchange:

  • קבוצת הפצה דינמית

  • MailContact

  • קבוצת דואר לא אוניברסלית

  • MailUniversalDistributionGroup

  • MailUniversalSecurityGroup

  • MailUser

  • PublicFolder

  • UserMailbox

אם עליך לחפש אובייקטי Exchange עם אותה כתובת SMTP של נמען (כפול), הפעל:

Get-Recipient -resultsize unlimited | where {$_.EmailAddresses -like "*[email *"}

באפשרותך גם לקבל רשימה שטוחה של כתובות SMTP ב- Exchange:

Get-Recipient | Select-Object -ExpandProperty EmailAddresses | Where-Object { $_ -match "^smtp:" } | ForEach-Object { $_.Replace("smtp:", "").Replace("SMTP:", "") }

כתובות SMTP ייחודיות נוצרו גם עבור ערוץ Microsoft Teams.

הצג את מספר כתובות ה- SMTP הייחודיות בארגון Exchange שלך:

Get-Recipient -ResultSize Unlimited | Select-Object -ExpandProperty EmailAddresses | Where-Object { $_ -match "^smtp:" }| measure-object