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

Exchange Online大邮箱及大文件夹报表导出脚本问题排查

问题分析与修正脚本

原脚本核心问题

  • 筛选邮箱时仅保留DisplayName,导致后续无法获取ItemCount和TotalItemSize属性
  • 未按需求筛选超过1GB的文件夹及子文件夹,仅取了前5个最大文件夹
  • 嵌套对象(TopFolders)直接导出CSV会显示为无效的System.Object[],无法查看实际数据

修正后的完整脚本

# 导出CSV路径
$ExportPath = "C:\EXO\40GBFile.csv"

# 清理旧文件(避免重复追加数据)
if (Test-Path $ExportPath) { Remove-Item $ExportPath -Force }

# 获取总容量超过40GB的邮箱统计信息,保留必要属性
$LargeMailboxes = Get-EXOMailboxStatistics -ResultSize Unlimited | 
    Where-Object { $_.TotalItemSize.Value.ToBytes() -gt 40GB } |
    Select-Object DisplayName, ItemCount, TotalItemSize, MailboxGuid

foreach ($Mailbox in $LargeMailboxes) {
    Write-Host "正在处理邮箱: $($Mailbox.DisplayName)"

    # 获取该邮箱所有文件夹及子文件夹统计,过滤大小超过1GB的文件夹
    $LargeFolders = Get-EXOMailboxFolderStatistics -Identity $Mailbox.MailboxGuid |
        Where-Object { 
            $_.TotalFolderSize -ne $null -and 
            $_.TotalFolderSize.Value.ToBytes() -gt 1GB 
        } |
        Select-Object FolderName, FolderPath, ItemsInFolder, TotalFolderSize

    # 为每个大文件夹生成独立记录,确保CSV可正常读取
    foreach ($Folder in $LargeFolders) {
        $OutputObject = [PSCustomObject]@{
            邮箱名称 = $Mailbox.DisplayName
            邮箱总项目数 = $Mailbox.ItemCount
            邮箱总容量 = $Mailbox.TotalItemSize.Value.ToString()
            文件夹名称 = $Folder.FolderName
            文件夹路径 = $Folder.FolderPath
            文件夹项目数 = $Folder.ItemsInFolder
            文件夹容量 = $Folder.TotalFolderSize.Value.ToString()
        }

        # 追加到CSV文件
        $OutputObject | Export-Csv -Path $ExportPath -Append -NoTypeInformation -Encoding UTF8
    }
}

Write-Host "导出完成,结果已保存至: $ExportPath"

关键修正说明

  1. 邮箱筛选优化:

    • 直接调用Get-EXOMailboxStatistics获取统计数据,减少冗余操作
    • 保留MailboxGuid作为标识(比DisplayName更可靠,避免重名冲突),同时保留ItemCount和TotalItemSize属性
    • 使用数值40GB直接比较,无需额外字符串转换
  2. 文件夹处理:

    • 添加条件筛选超过1GB的文件夹,同时判断TotalFolderSize不为空,避免系统文件夹空值报错
    • 增加FolderPath字段,明确子文件夹层级关系
  3. CSV导出优化:

    • 每个大文件夹生成独立CSV记录,解决嵌套对象无法显示的问题
    • 将容量转换为可读字符串(如"1.2 GB"),提升报表可读性
    • 使用UTF8编码避免中文乱码,处理前清理旧文件防止数据重复

内容的提问来源于stack exchange,提问作者David Moreau

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 12:16:09