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

[玩转系统] 在 PowerShell 中检索大量用户的邮箱统计信息

作者:精品下载站 日期:2024-12-14 07:09:33 浏览:13 分类:玩电脑

在 PowerShell 中检索大量用户的邮箱统计信息


我目前正在开展一个项目,我们要将 24,000 个邮箱从 Exchange 2016 迁移到 Exchange Online。出于规划目的,我们希望了解基本统计数据,例如 LastLogonTime 和项目数量(常规项目和已删除项目)。

要为我的邮箱检索此信息,您可以使用如下内容:

[PS] C:\ >Get-Mailbox -Identity wesseliusj | Get-MailboxStatistics | Select DisplayName,LastLogonTime,ItemCount,TotalItemSize,DeletedItemsCount,TotalDeletedItemSize

DisplayName          : Wesselius, J
LastLogonTime        : 28-4-2022 11:24:46
ItemCount            : 1065
TotalItemSize        : 63.95 MB (67,060,296 bytes)
DeletedItemsCount    :
TotalDeletedItemSize : 5.421 MB (5,684,477 bytes)

TotalItemSize 和 TotalDeletedItemSize 以文本而非数字形式返回。由于我想将所有内容导出到 CSV 文件并导入到 Excel 中进行进一步处理,因此必须将其转换为数值。这称为计算属性,可以使用以下选项实现:

@{Name="TotalItemSizeMB";Expression={$_.TotalItemSize.Value.ToBytes()}}

ToBytes() 也可以是 ToKB()、ToMB() 或 ToGB(),具体取决于您的情况。

之前的命令和输出现在将如下所示:

[PS] C:\>Get-Mailbox -Identity wesseliusj | Get-MailboxStatistics | Select DisplayName,LastLogonTime,ItemCount,@{Name="TotalItemSizeMB";Expression={$_.TotalItemSize.Value.ToBytes()}},DeletedItemsCount,@{Name="TotalDeletedItemSizeMB";Expression={$_.TotalDeletedItemSize.Value.ToBytes()}}


DisplayName            : Wesselius, J
LastLogonTime          : 28-4-2022 11:24:46
ItemCount              : 1065
TotalItemSizeMB        : 67060293
DeletedItemsCount      :
TotalDeletedItemSizeMB : 5684477

现在使用 Export-Csv 命令,我们就可以开始了(你会希望?):

[PS] C:\>get-mailbox -ResultSize unlimited | Get-MailboxStatistics | Select DisplayName,LastLogonTime,ItemCount,@{Name="TotalItemSizeMB";Expression={$_.TotalItemSize.Value.ToBytes()}},DeletedItemsCount,@{Name="TotalDeletedItemSizeMB";Expression={$_.TotalDeletedItemSize.Value.ToBytes()}} | export-csv -Path statistics.csv -nti

Sending data to a remote command failed with the following error message: [ClientAccessServer=EXCH2016,BackEndServer=exch2016.labs.local,RequestId=c0430cd6-6f4d-48a5-8434-d59ebcd91887,TimeStamp=28-4-2022 10:03:54] [FailureCategory=W
SMan-Others] The total data received from the remote client exceeded the allowed maximum. The allowed maximum is 524288000. For more information, see the about_Remote_Troubleshooting Help topic.
    + CategoryInfo          : OperationStopped: (exch2016.labs.local:String) [], PSRemotingTransportException
    + FullyQualifiedErrorId : JobFailure
    + PSComputerName        : exch2016.labs.local

[PS] C:\>

不幸的是,Get-Mailbox 命令在一次运行中检索了所有 24,000 个邮箱,然后尝试将其用作 Get-MailboxStatistics 命令的输入。虽然这仅适用于少数邮箱,但对于大量邮箱来说,它会耗尽内存。

这里的解决方案(或解决方案之一)是将所有邮箱导入到一个变量中,并结合 Get-MailboxStatistics 命令循环遍历该变量中的所有邮箱:

[PS] C:\> $Mailboxes = Get-Mailbox -Resultsize Unlimited
[PS] C:\> ForEach ($Mailbox in $Mailboxes) {Get-MailboxStatistics $Mailbox | Select  DisplayName,LastLogonTime,ItemCount,@{Name="TotalItemSizeMB";Expression={$_.TotalItemSize.Value.ToBytes()}},DeletedItemsCount,@{Name="TotalDeletedItemSizeMB";Expression={$_.TotalDeletedItemSize.Value.ToBytes()}} | export-csv -Path statistics.csv -nti}

我遇到的最后一个问题是将用户的 UPN 或别名添加到 CSV 文件中。 UPN 和别名不在 Get-MailboxStatistics 返回的对象中,但由 Get-Mailbox 命令返回。要在输出中获取这些属性,必须再次使用计算属性,类似于之前使用的大小属性。

要检索 UPN,请使用类似于以下内容的内容:

@{Name = "UPN"; Expression={$Mailbox.UserPrincipalName}}

这将获取第一个命令 (Get-Mailbox) 的 UserPrincipalName 属性并将其解析到输出中。整个命令将是:

[PS] C:\>ForEach ($Mailbox in $Mailboxes) {Get-MailboxStatistics $Mailbox | Select  DisplayName, @{Name = "UPN"; Expression={$Mailbox.UserPrincipalName}},LastLogonTime,ItemCount,@{Name="TotalItemSizeMB";Expression={$_.TotalItemSize.Value.To
Bytes()}},DeletedItemsCount,@{Name="TotalDeletedItemSizeMB";Expression={$_.TotalDeletedItemSize.Value.ToBytes()}}}

DisplayName            : Wesselius, J
UPN                    : j.wesselius@Exchangelabs.nl
LastLogonTime          : 29-4-2022 14:22:03
ItemCount              : 1098
TotalItemSizeMB        : 68714749
DeletedItemsCount      :
TotalDeletedItemSizeMB : 5822787

[PS] C:\>

这将创建一个正确的 CSV 文件,其中包含我需要的所有信息,准备导入到 Excel 中?

有关处理大量用户(在 Office 365 中)的更多信息,请查看以下文章:在 Office 365 中为大量用户运行 PowerShell cmdlet - Microsoft 技术社区

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

取消回复欢迎 发表评论:

关灯