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

[玩转系统] 如何在 PowerShell 中使用获取邮箱

作者:精品下载站 日期:2024-12-14 03:43:45 浏览:12 分类:玩电脑

如何在 PowerShell 中使用获取邮箱


想要从 Exchange 导出所有邮箱?或者需要查找特定用户的邮箱设置?通过 PowerShell 中的 cmdlet Get-Mailbox,我们可以快速从 Exchange Online 服务器中提取所需的所有信息。

您可以在 Exchange 管理中心找到几乎所有邮箱信息,但您可能已经注意到,这并不总是查找信息的最快方法。特别是当您想要从多个用户获取或导出邮箱信息时,您将需要使用PowerShell。

在本文中,我们将了解如何在 PowerShell 中使用 Get-Mailbox cmdlet。在查找和导出邮箱信息方面,我将提供一些有用的示例。作为奖励,我已将完整的脚本添加到您邮箱中最重要的信息中。

安装 Exchange 在线模块

在我们可以在 PowerShell 中使用 Get-Mailbox cmdlet 之前,您需要安装 Exchange Online 模块。确保安装最新的 Exchange Online v3 模块,该模块可以在 PowerShell 5 和 7 上使用。

笔记

Get-Mailbox cmdlet 还可以在本地 Exchange Server 2010 及更高版本上使用,但对于本地版本,您将需要使用 Exchange 命令行管理程序

在本文中,我将重点介绍 Exchange Online 服务器。确保您已连接到 Exchange Online:

Connect-ExchangeOnline -UserPrincipalName [email protected]

在 PowerShell 中使用“获取邮箱”查找邮箱

Get Mailbox cmdlet 允许我们从 Exchange Online 服务器查找邮箱并从中提取信息。该cmdlet的优点是我们可以使用不同的选项来查找或过滤邮箱。

我们可以使用以下选项来查找邮箱:

  • Anr - 通过名称的一部分查找邮箱(不明确的名称解析)
  • 身份 - 根据姓名、用户域名或电子邮件地址查找邮箱
  • 过滤器 - 根据查询检索多个邮箱
  • MailboxPlan - 获取分配了特定邮箱计划的所有邮箱
  • RecipientTypeDetails - 仅返回指定的邮箱类型

如果您知道所需的电子邮件地址或邮箱名称,那么标识参数是选择邮箱的最常用方法:

# Find the mailbox on name or alias
Get-Mailbox -Identity adelev

# Using the email address to find the mailbox
Get-Mailbox -Identity [email protected]

[玩转系统] 如何在 PowerShell 中使用获取邮箱

查找所需邮箱的更快选项是使用鲜为人知的 -anr 参数。这将使用指定的字符串进行不明确的名称解析搜索,并返回所有匹配的邮箱。它搜索以下属性:

  • 通用名
  • 显示名称
  • 名字和姓氏
  • 别名

需要注意的是,您需要输入至少 3 个字符的邮箱名称。因此,如果我们想查看 Adele Vance 的邮箱详细信息,我们可以简单地使用以下命令:

Get-Mailbox -anr ade

使用过滤器选项

Get-Mailbox cmdlet 包含很多属性,我们可以使用其中大部分属性来过滤邮箱结果。那么让我们看一下几个常用的查找邮箱的示例:

要查找部分名称的邮箱,您可以使用 -anr 参数,如前所述。但我们当然也可以使用过滤器。与 anr 相比,filter 的优点是您可以过滤以指定字符串开头或结尾的所有邮箱:

# Get all mailboxes that start with 'di'
Get-Mailbox -Filter "Displayname -like 'di*'"

# Or get all mailboxes where the name ends with 'test'
Get-Mailbox -Filter "Name -like '*test'"

根据配额过滤邮箱

当您想要根据其中一种配额(Archive、ProhibitSendQuota、IssueWarning 等)筛选邮箱时,您可能会注意到,您将无法根据配额大小进行筛选。例如,这是行不通的:

Get-Mailbox -Filter "IssueWarningQuota -lt '50GB'"

问题是您只能将过滤器与配额结合使用来检查该属性是否设置为无限制:

# Get all mailboxes were the ProhibitSendReceiveQuota is set to unlimited
Get-Mailbox -Filter "ProhibitSendReceiveQuota -eq 'Unlimited'"

# Or not set to unlimited
Get-Mailbox -Filter "ProhibitSendReceiveQuota -ne 'Unlimited'"

要“过滤”实际值,我们需要获取所有邮箱并使用 where 过滤器:

# Get all mailboxes where the issue warning quota is less then 50GB
Get-Mailbox | where {$_.IssueWarningQuota -lt '50GB'}

根据MailboxPlan获取邮箱

-MailboxPlan 参数允许我们获取分配了特定邮箱计划的所有邮箱。第一步是获取租户中的所有可用计划:

Get-MailboxPlan | Select DisplayName | ft

# Result
DisplayName
-----------
ExchangeOnline
ExchangeOnlineEnterprise
ExchangeOnlineEssentials
ExchangeOnlineDeskless

我们可以使用计划中的显示名称来过滤邮箱:

# Get all the mailboxes with the Exchange ONline plan (most of the time shared or resource mailboxes)
Get-Mailbox -MailboxPlan ExchangeOnline

收件人类型详细信息过滤

在 Exchange 中,有不同类型的邮箱。除了普通的用户邮箱之外,我们还有以下类型:

  • 客房邮箱
  • 共享邮箱
  • 团队邮箱
  • 群组邮箱
  • 设备邮箱

这些甚至不是所有类型,但它们是最常见的。通过参数RecipientTypeDetails,我们可以根据邮箱类型过滤结果。因此,如果您想获取所有共享邮箱,只需使用以下 cmdlet:

# Get all Shared mailboxes
Get-Mailbox -RecipientTypeDetails SharedMailbox

# Or all (meeting) room mailboxes
Get-Mailbox -RecipientTypeDetails RoomMailbox

检索所有邮箱

要简单地检索所有邮箱,我们不必指定任何过滤器。您只需将 ResultSize 设置为无限制:

Get-Mailbox -ResultSize unlimited

建议

如开头所述,最好将 Get-EXOMailbox cmdlet 与 Exchange Online 结合使用。它比 Get-Mailbox cmdlet 快得多。例如,使用 Get-Mailbox 检索 230 个邮箱需要 4.1 秒,而使用 Get-EXOMailbox 只需 2.4 秒。

获取非活动或存档邮箱

要获取所有非活动邮箱,我们可以使用参数-InactiveMailboxOnly

Get-Mailbox -InactiveMailboxOnly

对于存档邮箱,您可以使用参数-Archive

Get-Mailbox -Archive

获取邮箱属性

Get-Mailbox cmdlet 返回大量属性,几乎 250 个!其中许多属性在大多数用例中都是不相关的。我们可以通过仅选择我们需要的属性来过滤结果,为了帮助您入门,我为您提供了一些提示/示例。

Get-Mailbox -anr adel | Select DisplayName, PrimarySMTPAddress, RecipientTypeDetails, ProhibitSendReceiveQuota, WhenMailboxCreated, UsageLocation

[玩转系统] 如何在 PowerShell 中使用获取邮箱

要从邮箱获取所有配额,我们可以在 select 语句中使用通配符:

Get-Mailbox -Resultsize unlimited | Select displayname, *quota*

# Result
ProhibitSendQuota            : 99 GB (106,300,440,576 bytes)
ProhibitSendReceiveQuota     : 100 GB (107,374,182,400 bytes)
RecoverableItemsQuota        : 30 GB (32,212,254,720 bytes)
RecoverableItemsWarningQuota : 20 GB (21,474,836,480 bytes)
CalendarLoggingQuota         : 6 GB (6,442,450,944 bytes)
UseDatabaseQuotaDefaults     : False
IssueWarningQuota            : 98 GB (105,226,698,752 bytes)
RulesQuota                   : 256 KB (262,144 bytes)
ArchiveQuota                 : 100 GB (107,374,182,400 bytes)
ArchiveWarningQuota          : 90 GB (96,636,764,160 bytes)

将邮箱信息导出到 CSV

Get-Mailbox cmdlet 通常用于从 Exchange 服务器提取邮箱信息。进一步处理信息的一个好方法是将结果导出到 Excel。我们可以使用 Export-CSV 选项来完成此操作。您可以通过在命令后面通过管道 Export-CSV 简单地导出任何结果集:

# Export all mailbox quotas to CSV
Get-Mailbox -Resultsize unlimited | Select displayname, *quota* | Export-CSV -NoTypeInformation

我还创建了几个与您可能感兴趣的邮箱信息相关的脚本:

  • 导出所有邮箱权限
  • 导出邮箱大小

总结

请确保您还查看了新的 Exchange Online cmdlet,例如 Get-EXOMailbox,它比旧的 cmdlet 提供更好的性能并且更可靠。为了快速查找邮箱,请确保尝试使用 anr 参数。

我希望这篇文章对您有用,如果您有任何疑问,请在下面发表评论。您可能还喜欢以下文章:

  • 根据电子邮件地址查找邮箱

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

取消回复欢迎 发表评论:

关灯