如何使用PowerShell在同一张表中获取Exchange邮箱及存档大小等数据
合并Exchange邮箱主数据与存档数据到同一张表的实现方案
完整修改代码
# 整合邮箱主数据与存档数据 $Result = @() $mailboxes = Get-Mailbox -ResultSize Unlimited $totalmbx = $mailboxes.Count $i = 1 $mailboxes | ForEach-Object { $i++ $mbx = $_ $archiveSize = $null $primarySizeGB = $null $itemCount = $null $lastLogonTime = $null Write-Progress -activity "Processing $mbx" -status "$i out of $totalmbx completed" # 拉取主邮箱统计数据 $primaryMbs = Get-MailboxStatistics $mbx.UserPrincipalName -ErrorAction SilentlyContinue if ($primaryMbs -and $primaryMbs.TotalItemSize -ne $null) { $primarySizeGB = [math]::Round(($primaryMbs.TotalItemSize.ToString().Split('(')[1].Split(' ')[0].Replace(',', '') / 1GB), 2) $itemCount = $primaryMbs.ItemCount $lastLogonTime = $primaryMbs.LastLogonTime } # 拉取存档邮箱统计数据(仅当存档激活时) if ($mbx.ArchiveStatus -eq "Active") { $archiveMbs = Get-MailboxStatistics $mbx.UserPrincipalName -Archive -ErrorAction SilentlyContinue if ($archiveMbs -and $archiveMbs.TotalItemSize -ne $null) { $archiveSize = [math]::Round(($archiveMbs.TotalItemSize.ToString().Split('(')[1].Split(' ')[0].Replace(',', '') / 1MB), 2) } else { $archiveSize = 0 } } $Result += New-Object -TypeName PSObject -Property $([ordered]@{ UserName = $mbx.DisplayName UserPrincipalName = $mbx.UserPrincipalName # 新增主邮箱相关字段 MailboxSizeInGB = $primarySizeGB ItemCount = $itemCount LastLogonTime = $lastLogonTime # 原有存档相关字段 ArchiveStatus = $mbx.ArchiveStatus ArchiveName = $mbx.ArchiveName ArchiveState = $mbx.ArchiveState ArchiveMailboxSizeInMB = $archiveSize ArchiveWarningQuota = if ($mbx.ArchiveStatus -eq "Active") { $mbx.ArchiveWarningQuota } Else { $null } ArchiveQuota = if ($mbx.ArchiveStatus -eq "Active") { $mbx.ArchiveQuota } Else { $null } AutoExpandingArchiveEnabled = $mbx.AutoExpandingArchiveEnabled }) } # 按需要的顺序输出所有字段,格式不会混乱 $Result | Select UserName, UserPrincipalName, MailboxSizeInGB, ItemCount, LastLogonTime, ArchiveMailboxSizeInMB, ArchiveWarningQuota, ArchiveQuota, AutoExpandingArchiveEnabled, ArchiveState | Format-Table
核心修改说明
- 移除了额外生成第二个统计结果集的逻辑,直接在原有遍历单邮箱的循环中同时拉取主邮箱、存档邮箱的统计数据,天然保证数据按用户对齐,无需额外匹配
- 修正了原有代码中拉取存档统计未加
-Archive参数的问题,避免存档大小取值错误 - 直接在有序属性表中新增主邮箱大小、项目数、上次登录时间三个字段,输出时直接指定字段顺序即可保证格式统一
内容的提问来源于stack exchange,提问作者Elly
相关产品推荐
相关产品推荐

