รับที่อยู่ 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 UTF8Get-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

