You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell共享邮箱统计脚本仅导出单条数据问题排查

问题分析与修正方案

我帮你排查下代码里的问题,这几个点导致你只得到一条数据:

核心问题1:循环内重置结果数组

你在foreach循环里每次都执行了$strUserDetails = @(...),这会把之前收集到的所有数据清空,相当于每次循环都重新创建一个空数组,最后自然只剩最后一次循环生成的对象。要把数组初始化放到循环外面,循环内只做追加操作。

核心问题2:UPN获取的冗余与错误

$upn = Get-Mailbox $mbx.DisplayName | Select UserPrincipalName完全没必要——$mbx本身就是Get-Mailbox返回的对象,直接用$mbx.UserPrincipalName就能拿到UPN,而且你现在存的是一个带属性的对象,不是字符串,导出CSV后会显示@{UserPrincipalName=xxx}这种奇怪的内容。

其他小问题

  • SubStrin拼写错了,应该是Substring;
  • 变量名$ItemSizeString和$itemSizeString大小写不一致,虽然PowerShell不严格,但容易搞混;
  • 用$mbx.DisplayName去查邮箱统计信息不够可靠,万一有重名邮箱就会出错,直接用$mbx.Identity更稳妥。

修正后的完整代码

Function Shared {
    # 初始化结果数组,放在循环外面避免每次重置
    $strUserDetails = @()
    # 用Join-Path处理路径,比直接拼接更安全
    $Filename = Join-Path -Path $Save_Path -ChildPath $SFilename
    $Shared_MBX = Get-Mailbox -RecipientType SharedMailbox -ResultSize Unlimited -SortBy Name

    foreach ($mbx in $Shared_MBX) {
        # 直接从现有对象取UPN,不用重复调用Get-Mailbox
        $upn = $mbx.UserPrincipalName
        # 用Identity获取统计信息,避免重名问题
        $UserMailbox = Get-MailboxStatistics -Identity $mbx.Identity | Select-Object DisplayName, ItemCount, TotalItemSize
        
        $ItemSizeString = $UserMailbox.TotalItemSize.ToString()
        # 修正拼写,统一变量大小写
        $sizeInBytes = $ItemSizeString.Substring(
            $ItemSizeString.IndexOf("(") + 1,
            $ItemSizeString.IndexOf(" bytes") - ($ItemSizeString.IndexOf("(") + 1)
        ).Replace(",", "")
        $strMailboxSize = "{0:N2}" -f [double]$sizeInBytes

        # 用PSCustomObject创建对象,语法更简洁
        $strUserDetails += [PSCustomObject]@{
            Name     = $upn
            Items    = $UserMailbox.ItemCount
            Size     = $strMailboxSize
        }
    }

    $strUserDetails | Export-Csv -NoTypeInformation -Append -Path $Filename
}

另外补充两个优化点:

  • 用Join-Path拼接路径,能自动处理Windows/Linux的路径分隔符,避免手动拼接出错;
  • [PSCustomObject]比New-Object更高效,语法也更直观,PowerShell 3.0及以上都支持。

内容的提问来源于stack exchange,提问作者Billy Smith

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 07:18:18