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

รับที่อยู่ SMTP (อีเมล) ทั้งหมดโดยใช้ PowerShell ใน Exchange


ในบางครั้ง คุณอาจต้องส่งออกรายชื่อที่อยู่อีเมลทั้งหมดในองค์กร Exchange ของคุณ ในบทความนี้ เราจะแสดงวิธีรับและส่งออกที่อยู่ SMTP ที่กำหนดทั้งหมดไปยังไฟล์ CSV ใน Exchange Server หรือ Microsoft 365 (Exchange Online) โดยใช้ PowerShell

เชื่อมต่อกับองค์กร Exchange ของคุณ:

  • คุณสามารถใช้โมดูล Exchange Management Shell (EMS) เพื่อจัดการ Exchange Server ภายในองค์กร หรือคุณสามารถเชื่อมต่อกับ 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 เพิ่มเติมหลายรายการ ซึ่งจัดเก็บไว้ในแอตทริบิวต์สตริง EmailAddresses อาจมีที่อยู่ประเภทอื่นในแอตทริบิวต์นี้ ดังนั้นหากต้องการรับรายการที่อยู่ 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

Get-Mailbox cmdlet จะแสดงเฉพาะข้อมูลเกี่ยวกับผู้ใช้และกล่องจดหมายที่ใช้ร่วมกันเท่านั้น

ใน Active Directory (หรือ Azure AD) อาจมีออบเจ็กต์ประเภทอื่นๆ ที่ได้รับมอบหมายที่อยู่ SMTP (ออบเจ็กต์ที่เปิดใช้งานเมล): กลุ่มการแจกจ่าย ผู้ติดต่อ และกลุ่ม Microsoft 365 (กลุ่มแบบรวมใน Entra ID) ใช้ Get-Recipient cmdlet เพื่อแสดงรายการที่อยู่ 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 ที่เป็นไปได้:

  • กลุ่มการกระจายแบบไดนามิก

  • จดหมายติดต่อ

  • MailNonUniversalGroup

  • MailUniversalDistributionGroup

  • MailUniversalSecurityGroup

  • ผู้ใช้เมล

  • โฟลเดอร์สาธารณะ

  • กล่องจดหมายของผู้ใช้

หากคุณต้องการค้นหาวัตถุ 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

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