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

แสดงรายการที่อยู่ SMTP ทั้งหมดด้วย PowerShell


บางครั้งคุณต้องการแสดงรายการที่อยู่ SMTP ทั้งหมดใน Exchange Server หรือ Exchange Online คุณต้องมีรายการนั้นเพื่อรวบรวมข้อมูลเนื่องจากคุณต้องการลบที่อยู่ SMTP รองออกจากกล่องจดหมายจำนวนมาก SMTP ที่มีตัวพิมพ์ใหญ่คือที่อยู่อีเมลหลัก และ smtp ที่มีตัวพิมพ์เล็กคือที่อยู่อีเมลรอง หรือที่เรียกว่าที่อยู่นามแฝง ที่อยู่อีเมลได้รับการกำหนดค่าเป็นที่อยู่พร็อกซีใน Active Directory ในบทความนี้ คุณจะได้เรียนรู้วิธีแสดงรายการที่อยู่ SMTP ทั้งหมดด้วย PowerShell

ค้นหาที่อยู่ SMTP ใน Exchange Admin Center

  1. ลงชื่อเข้าใช้ Exchange Admin Center และไปที่คุณสมบัติของกล่องจดหมาย

  2. คลิกที่อยู่อีเมลบนเมนู

  3. ดูที่อยู่อีเมลที่กำหนดค่าไว้

คุณสามารถเพิ่ม เปลี่ยนแปลง หรือลบที่อยู่อีเมลได้ มีที่อยู่อีเมล SMTP สองรายการที่กำหนดค่าไว้สำหรับผู้ใช้

ค้นหาที่อยู่ SMTP ใน Active Directory

  1. เริ่มผู้ใช้ Active Directory และคอมพิวเตอร์ หลังจากนั้น ให้เปิดใช้งาน คุณลักษณะขั้นสูง

  2. ไปที่คุณสมบัติอ็อบเจ็กต์ผู้ใช้แล้วคลิกแท็บตัวแก้ไขแอตทริบิวต์

  3. ค้นหาแอตทริบิวต์ proxyAddresses

ที่อยู่อีเมล SMTP สองอันเดียวกันจะแสดงเป็นค่า ดังที่เราเห็นก่อนหน้านี้ใน Exchange Admin Center

คุณได้เห็นที่อยู่ SMTP ในทั้งสองแห่งแล้ว จะรับรายการกล่องจดหมายทั้งหมดรวมถึงที่อยู่ SMTP ได้อย่างไร อ่านเพิ่มเติมเกี่ยวกับเรื่องนี้ในส่วนถัดไป

แสดงรายการที่อยู่ SMTP หลักทั้งหมด

เรียกใช้ Exchange Management Shell ในฐานะผู้ดูแลระบบหรือเชื่อมต่อกับ Exchange Online PowerShell

หมายเหตุ: คำสั่งด้านล่างใช้ได้กับ Exchange Server ภายในองค์กรและ Exchange Online

เรียกใช้ Get-Mailbox cmdlet เพื่อแสดงรายการกล่องจดหมายที่มีที่อยู่ SMTP หลัก

[PS] C:\>Get-Mailbox -ResultSize Unlimited | Select-Object DisplayName,PrimarySmtpAddress | Sort-Object DisplayName

DisplayName              PrimarySmtpAddress
-----------              ------------------
Administrator            Administrator@exoip.com
Ali Tajran               Ali.Tajran@exoip.com
Amanda Morgan            Amanda.Morgan@exoip.com
Anna Welch               Anna.Welch@exoip.com
Benetiz Anees            Benetiz.Anees@exoip.com
Boris Campbell           Boris.Campbell@exoip.com
Carl Kelly               Carl.Kelly@exoip.com
Christopher Payne        Christopher.Payne@exoip.com
Discovery Search Mailbox MsExchDiscoveryMailboxD919BA05-46A6-415f-80AD-7E09334BB852@exoip.com
Elizabeth Roberts        Elizabeth.Roberts@exoip.com
Emma Underwood           Emma.Underwood@exoip.com
Hannah Walker            Hannah.Walker@exoip.com
Jake Cornish             Jake.Cornish@exoip.com

เรียกใช้ Get-Recipient cmdlet หากคุณต้องการรับออบเจ็กต์ทั้งหมดในองค์กร ซึ่งจะได้รับกล่องจดหมาย กลุ่มการแจกจ่าย กลุ่มความปลอดภัย และผู้ติดต่อ

[PS] C:\>Get-Recipient -ResultSize Unlimited | Select-Object DisplayName,PrimarySmtpAddress | Sort-Object DisplayName

ในองค์กร Exchange ของเรา เรามีที่อยู่อีเมลมากกว่าหนึ่งรายการสำหรับกล่องจดหมายเดียวกัน ในส่วนถัดไป เราจะแสดงรายการที่อยู่อีเมลสำรองเหล่านี้

แสดงรายการที่อยู่อีเมล SMTP ทั้งหมด

ในส่วนก่อนหน้านี้ เราได้ระบุที่อยู่ SMTP หลักของทุกกล่องจดหมายในองค์กร Exchange ตอนนี้เราต้องการมีรายการรวมถึงที่อยู่ SMTP สำรอง เราจะเพิ่มสิ่งนี้ลงใน PowerShell cmdlet ที่มีอยู่ได้อย่างไร

เราจะใช้ประโยชน์จากบล็อกสคริปต์ บล็อกสคริปต์คือชุดของคำสั่งหรือนิพจน์ที่สามารถใช้เป็นหน่วยเดียวได้ เมื่อใช้สิ่งนั้น ระบบจะรวบรวมที่อยู่อีเมล SMTP ทั้งหมด โปรดทราบว่า SMTP เขียนด้วย ตัวอักษรพิมพ์เล็ก เนื่องจากไม่ใช่ SMTP หลัก SMTP หลักเขียนด้วยตัวพิมพ์ใหญ่

[PS] C:\>Get-Mailbox -ResultSize Unlimited | Select-Object DisplayName,PrimarySmtpAddress, @{Name="EmailAddresses";Expression={($_.EmailAddresses | Where-Object {$_ -clike "smtp*"} | ForEach-Object {$_ -replace "smtp:",""}) -join ","}} | Sort-Object DisplayName

DisplayName              PrimarySmtpAddress                                                   EmailAddresses
-----------              ------------------                                                   --------------
Administrator            Administrator@exoip.com                                              Administrator@exoip.local
Ali Tajran               Ali.Tajran@exoip.com
Amanda Morgan            Amanda.Morgan@exoip.com                                              Amanda.Morgan@alitajran.com
Anna Welch               Anna.Welch@exoip.com
Benetiz Anees            Benetiz.Anees@exoip.com
Boris Campbell           Boris.Campbell@exoip.com                                             Boris.Campbell@contoso.com, Boris.Campbell@alitajran.com
Carl Kelly               Carl.Kelly@exoip.com
Christopher Payne        Christopher.Payne@exoip.com
Discovery Search Mailbox MsExchDiscoveryMailboxD919BA05-46A6-415f-80AD-7E09334BB852@exoip.com DiscoverySearchMailbox{D919BA05-46A6-415f-80AD-7E09334BB852}@exoip.local
Elizabeth Roberts        Elizabeth.Roberts@exoip.com
Emma Underwood           Emma.Underwood@exoip.com
Hannah Walker            Hannah.Walker@exoip.com
Jake Cornish             Jake.Cornish@exoip.com

เรียกใช้ Get-Recipient cmdlet หากคุณต้องการรับออบเจ็กต์ทั้งหมดในองค์กร ซึ่งจะได้รับกล่องจดหมาย กลุ่มการแจกจ่าย กลุ่มความปลอดภัย และผู้ติดต่อ

[PS] C:\>Get-Recipient -ResultSize Unlimited | Select-Object DisplayName,PrimarySmtpAddress, @{Name="EmailAddresses";Expression={($_.EmailAddresses | Where-Object {$_ -clike "smtp*"} | ForEach-Object {$_ -replace "smtp:",""}) -join ","}} | Sort-Object DisplayName

เพิ่ม OutGrid-View cmdlet ที่ส่วนท้ายของคำสั่งเพื่อส่งออกข้อมูลไปยังหน้าต่างมุมมองตาราง

[PS] C:\>Get-Mailbox -ResultSize Unlimited | Select-Object DisplayName,PrimarySmtpAddress, @{Name="EmailAddresses";Expression={($_.EmailAddresses | Where-Object {$_ -clike "smtp*"} | ForEach-Object {$_ -replace "smtp:",""}) -join ","}} | Sort-Object DisplayName | Out-GridView
[PS] C:\>Get-Recipient -ResultSize Unlimited | Select-Object DisplayName,PrimarySmtpAddress, @{Name="EmailAddresses";Expression={($_.EmailAddresses | Where-Object {$_ -clike "smtp*"} | ForEach-Object {$_ -replace "smtp:",""}) -join ","}} | Sort-Object DisplayName | Out-GridView

ส่งออกผลลัพธ์เป็นไฟล์ CSV

ส่งออกผลลัพธ์เป็นไฟล์ CSV ในเส้นทาง C:\temp

[PS] C:\>Get-Mailbox -ResultSize Unlimited | Select-Object DisplayName,PrimarySmtpAddress, @{Name="EmailAddresses";Expression={($_.EmailAddresses | Where-Object {$_ -clike "smtp*"} | ForEach-Object {$_ -replace "smtp:",""}) -join ","}} | Sort-Object DisplayName | Export-CSV "C:\temp\List_SMTP_Addresses.csv" -NoTypeInformation -Encoding UTF8
[PS] C:\>Get-Recipient -ResultSize Unlimited | Select-Object DisplayName,PrimarySmtpAddress, @{Name="EmailAddresses";Expression={($_.EmailAddresses | Where-Object {$_ -clike "smtp*"} | ForEach-Object {$_ -replace "smtp:",""}) -join ","}} | Sort-Object DisplayName | Export-CSV "C:\temp\List_SMTP_Addresses.csv" -NoTypeInformation -Encoding UTF8

เปิดไฟล์ CSV ที่ส่งออกด้วย Microsoft Excel หรือโปรแกรมแก้ไข/ดูไฟล์ CSV อื่นๆ

ทุกอย่างดูดีมาก! ฉันหวังว่าจะช่วยให้คุณส่งออกที่อยู่อีเมลทั้งหมดเป็นไฟล์ CSV

อ่านเพิ่มเติม: ส่งออกการอนุญาตโฟลเดอร์กล่องจดหมายเป็นไฟล์ CSV »

บทสรุป

คุณได้เรียนรู้วิธีแสดงรายการที่อยู่ SMTP ทั้งหมดใน Exchange Server และ Exchange Online ด้วย PowerShell เรียกใช้คำสั่งเพื่อรับรายการกล่องจดหมายที่มีที่อยู่ SMTP ส่งออกรายการเป็น CSV และดำเนินการผ่าน Microsoft Excel

คุณสนุกกับบทความนี้หรือไม่? คุณอาจต้องการค้นหาที่อยู่ SMTP ที่หายไปด้วย PowerShell อย่าลืมติดตามเราและแบ่งปันบทความนี้

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