当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 使用 PowerShell 列出所有 SMTP 地址

作者:精品下载站 日期:2024-12-15 00:40:27 浏览:14 分类:玩电脑

使用 PowerShell 列出所有 SMTP 地址


有时您想要列出 Exchange Server 或 Exchange Online 中的所有 SMTP 地址。您需要该列表来收集信息,因为您想要从邮箱中批量删除辅助 SMTP 地址。大写的 SMTP 是主电子邮件地址,小写的 smtp 是辅助电子邮件地址,也称为别名地址。电子邮件地址在 Active Directory 中配置为代理地址。在本文中,您将了解如何使用 PowerShell 列出所有 SMTP 地址。

在 Exchange 管理中心查找 SMTP 地址

  1. 登录 Exchange 管理中心并转到邮箱的属性。

  2. 点击菜单上的电子邮件地址

  3. 查看配置的电子邮件地址。

您可以添加、更改或删除电子邮件地址。为用户配置了两个 SMTP 电子邮件地址。

[玩转系统] 使用 PowerShell 列出所有 SMTP 地址

在 Active Directory 中查找 SMTP 地址

  1. 启动 Active Directory 用户和计算机。之后,启用高级功能

  2. 转到用户对象属性并单击属性编辑器选项卡。

  3. 找到属性proxyAddresses

相同的两个 SMTP 电子邮件地址显示为值,正如我们之前在 Exchange 管理中心中看到的那样。

[玩转系统] 使用 PowerShell 列出所有 SMTP 地址

您已经在两个地方看到了 SMTP 地址。如何获取所有邮箱的列表,包括它们的 SMTP 地址?在下一部分中阅读更多相关内容。

列出所有主 SMTP 地址

以管理员身份运行 Exchange 命令行管理程序或连接到 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            [email protected]
Ali Tajran               [email protected]
Amanda Morgan            [email protected]
Anna Welch               [email protected]
Benetiz Anees            [email protected]
Boris Campbell           [email protected]
Carl Kelly               [email protected]
Christopher Payne        [email protected]
Discovery Search Mailbox MsExchDiscoveryMailboxD919BA05-46A6-415f-80AD-7E09334BB852@exoip.com
Elizabeth Roberts        [email protected]
Emma Underwood           [email protected]
Hannah Walker            [email protected]
Jake Cornish             [email protected]

如果您想要获取组织中的所有对象,请运行 Get-Recipient cmdlet。这将获取邮箱、通讯组、安全组和联系人。

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

在我们的 Exchange 组织中,同一邮箱有多个电子邮件地址。在下一部分中,我们将列出这些辅助电子邮件地址。

列出所有 SMTP 电子邮件地址

在上一部分中,我们列出了 Exchange 组织中每个邮箱的主 SMTP 地址。现在我们想要一个包含辅助 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            [email protected]                                              [email protected]
Ali Tajran               [email protected]
Amanda Morgan            [email protected]                                              [email protected]
Anna Welch               [email protected]
Benetiz Anees            [email protected]
Boris Campbell           [email protected]                                             [email protected], [email protected]
Carl Kelly               [email protected]
Christopher Payne        [email protected]
Discovery Search Mailbox MsExchDiscoveryMailboxD919BA05-46A6-415f-80AD-7E09334BB852@exoip.com DiscoverySearchMailbox{D919BA05-46A6-415f-80AD-7E09334BB852}@exoip.local
Elizabeth Roberts        [email protected]
Emma Underwood           [email protected]
Hannah Walker            [email protected]
Jake Cornish             [email protected]

如果您想要获取组织中的所有对象,请运行 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 文件

将结果导出到路径 C:\temp 中的 CSV 文件。

[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

使用 Microsoft Excel 或任何其他 CSV 文件编辑器/查看器打开导出的 CSV 文件。

[玩转系统] 使用 PowerShell 列出所有 SMTP 地址

一切看起来都很棒!我希望它能帮助您将所有电子邮件地址导出到 CSV 文件。

了解更多:将邮箱文件夹权限导出到 CSV 文件 »

结论

您了解了如何使用 PowerShell 列出 Exchange Server 和 Exchange Online 中的所有 SMTP 地址。运行命令以获取具有 SMTP 地址的邮箱列表。将列表导出为 CSV 并使用 Microsoft Excel 进行浏览。

您喜欢这篇文章吗?您可能还喜欢使用 PowerShell 查找丢失的 SMTP 地址。不要忘记关注我们并分享这篇文章。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯