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

[玩转系统] 使用 PowerShell 导出 Microsoft 365 邮箱大小报告

作者:精品下载站 日期:2024-12-14 09:10:01 浏览:17 分类:玩电脑

使用 PowerShell 导出 Microsoft 365 邮箱大小报告


是否要导出所有 Microsoft 365 邮箱存储大小数据?在 Microsoft 365 管理中心中,您可以导出邮箱使用情况报告。但这份名单并未显示详细信息。在本文中,我们将向您展示如何使用 PowerShell 导出 Microsoft 365 邮箱大小报告。

在 Microsoft 365 管理中心获取邮箱大小报告

我们想向您展示如何在 Microsoft 365 管理中心中显示和导出邮箱使用情况报告。

1.显示邮箱使用情况报告

请按照以下步骤获取 Microsoft 365 中的所有用户邮箱存储:

  1. 登录 Microsoft 365 管理中心
  2. 在菜单上,单击报告 > 使用情况
  3. 在“概览”下 > 单击交换
  4. 点击邮箱使用情况

[玩转系统] 使用 PowerShell 导出 Microsoft 365 邮箱大小报告

您可以在图表中查看已使用的邮箱存储总数。但我们希望查看每个邮箱使用的存储空间。

  1. 向下滚动查看每个邮箱的信息列表

注意:默认情况下,您只能看到数字和字母,而看不到每个邮箱的用户名。自 2021 年 9 月以来,Microsoft 一直隐藏所有报告的用户信息,但你可以更改这些设置。

为了保护隐私,每个邮箱的用户名都被隐藏。在下一步中,我们将向您展示如何查看报告中的用户名。

[玩转系统] 使用 PowerShell 导出 Microsoft 365 邮箱大小报告

如果您可以看到用户名,请跳过下一步并转到将邮箱使用情况导出到 CSV 文件

2.在邮箱使用报告中显示用户名

要在报告中显示用户名,请执行以下步骤:

  1. 点击设置 > 组织设置
  2. 点击服务
  3. 点击报告
  4. 清除复选框在所有报告中显示隐藏的用户、组和网站名称
  5. 点击保存

[玩转系统] 使用 PowerShell 导出 Microsoft 365 邮箱大小报告

3.将邮箱使用情况导出到CSV文件

显示用户名后,您可以将邮箱大小报告导出到 CSV 文件。

返回所有邮箱使用情况列表。在 Microsoft 365 管理中心中,导航到报告 > 使用情况 > Exchange > 邮箱使用情况

  1. 点击导出

[玩转系统] 使用 PowerShell 导出 Microsoft 365 邮箱大小报告

  1. 使用 Microsoft Excel 打开 CSV 文件以查看和排序数据

Microsoft 365 的邮箱使用情况报告显示所有邮箱以及已使用的存储空间。

[玩转系统] 使用 PowerShell 导出 Microsoft 365 邮箱大小报告

邮箱使用情况报告显示有关邮箱大小的有限数据。如果您需要更详细的数据,我们建议您在下一步中使用 PowerShell 脚本。

使用 PowerShell 脚本获取 Microsoft 365 邮箱大小报告

获取所有用户的邮箱大小的一个很好的方法是使用下面的 PowerShell 脚本。

MailboxSizeReport365.ps1 PowerShell 脚本有 2 个选项:

  1. 导出到 CSV 文件 (OFFICE 365)
  2. 输入带通配符的邮箱名称(导出)(OFFICE 365)

脚本将运行并查找拥有邮箱的所有用户,并在 CSV 文件中收集每个邮箱的以下信息:

  1. 显示名称
  2. 别名
  3. Sam 帐户名
  4. 收件人类型
  5. 收件人组织单位
  6. 主 SMTP 地址
  7. 电子邮件地址
  8. 数据库
  9. 服务器名称
  10. 项目总尺寸
  11. 项目计数
  12. 已删除项目计数
  13. 已删除项目总大小
  14. 禁止发送接收MB 配额
  15. 使用数据库配额默认值
  16. 上次登录时间
  17. 档案名称
  18. 存档状态
  19. 档案状态
  20. 存档配额
  21. 存档总项目大小
  22. 存档总项目数

我们将在接下来的步骤中向您展示这两个选项和结果。

1. 连接到 PowerShell Online

以管理员身份启动 Windows PowerShell 并运行 cmdlet Connect-ExchangeOnline 以连接到 Exchange Online PowerShell。

Connect-ExchangeOnline

2.下载MailboxSizeReport365 PowerShell脚本

要下载 MailboxSizeReport365 PowerShell 脚本,请选择以下选项之一:

  1. 下载 MailboxSizeReport365.ps1 PowerShell 脚本
  2. 或者将以下脚本复制到记事本中并将其另存为MailboxSizeReport365.ps1文件

注意:该脚本不会获取非活动邮箱文件夹统计信息。您需要先为用户邮箱分配许可证,然后才能获取任何数据。

<#
    .SYNOPSIS
    .\MailboxSizeReport365.ps1

    .DESCRIPTION
    Connect to Exchange Online PowerShell first.
    The script exports a Mailbox Size Report for all Microsoft 365 mailboxes
    to a CSV file. You can also export a single mailbox or WildCard as an option.

    .LINK
    o365info.com/microsoft-365-mailbox-size-report

    .NOTES
    Written By: o365info
    Website:    o365info.com

    .CHANGELOG
    V1.00, 03/24/2023 - Initial version
#>

Write-host "

Mailbox Size Report 365
----------------------------

1.Export to CSV File (OFFICE 365)

2.Enter the Mailbox Name with Wild Card (Export) (OFFICE 365)"-ForeGround "Cyan"

#----------------
# Script
#----------------

Write-Host "               "

$number = Read-Host "Choose The Task"
$output = @()
switch ($number) {

    1 {

        $i = 0 
        $CSVfile = Read-Host "Enter the Path of CSV file (Eg. C:\Report.csv)" 

        $AllMailbox = Get-mailbox -Resultsize Unlimited

        Foreach ($Mbx in $AllMailbox) {

            $Stats = Get-mailboxStatistics -Identity $Mbx.distinguishedname -WarningAction SilentlyContinue

            if ($Mbx.ArchiveName.count -eq "0") {
                $ArchiveTotalItemSize = $null
                $ArchiveTotalItemCount = $null
            }
            if ($Mbx.ArchiveName -ge "1") {
                $MbxArchiveStats = Get-mailboxstatistics $Mbx.distinguishedname -Archive -WarningAction SilentlyContinue
                $ArchiveTotalItemSize = $MbxArchiveStats.TotalItemSize
                $ArchiveTotalItemCount = $MbxArchiveStats.BigFunnelMessageCount
            }

            $userObj = New-Object PSObject

            $userObj | Add-Member NoteProperty -Name "Display Name" -Value $mbx.displayname
            $userObj | Add-Member NoteProperty -Name "Alias" -Value $Mbx.Alias
            $userObj | Add-Member NoteProperty -Name "SamAccountName" -Value $Mbx.SamAccountName
            $userObj | Add-Member NoteProperty -Name "RecipientType" -Value $Mbx.RecipientTypeDetails
            $userObj | Add-Member NoteProperty -Name "Recipient OU" -Value $Mbx.OrganizationalUnit
            $userObj | Add-Member NoteProperty -Name "Primary SMTP address" -Value $Mbx.PrimarySmtpAddress
            $userObj | Add-Member NoteProperty -Name "Email Addresses" -Value ($Mbx.EmailAddresses -join ",")
            $userObj | Add-Member NoteProperty -Name "Database" -Value $Stats.Database
            $userObj | Add-Member NoteProperty -Name "ServerName" -Value $Stats.ServerName
            $userObj | Add-Member NoteProperty -Name "TotalItemSize" -Value $Stats.TotalItemSize
            $userObj | Add-Member NoteProperty -Name "ItemCount" -Value $Stats.ItemCount
            $userObj | Add-Member NoteProperty -Name "DeletedItemCount" -Value $Stats.DeletedItemCount
            $userObj | Add-Member NoteProperty -Name "TotalDeletedItemSize" -Value $Stats.TotalDeletedItemSize
            $userObj | Add-Member NoteProperty -Name "ProhibitSendReceiveQuota-In-MB" -Value $Mbx.ProhibitSendReceiveQuota
            $userObj | Add-Member NoteProperty -Name "UseDatabaseQuotaDefaults" -Value $Mbx.UseDatabaseQuotaDefaults
            $userObj | Add-Member NoteProperty -Name "LastLogonTime" -Value $Stats.LastLogonTime
            $userObj | Add-Member NoteProperty -Name "ArchiveName" -Value ($Mbx.ArchiveName -join ",")
            $userObj | Add-Member NoteProperty -Name "ArchiveStatus" -Value $Mbx.ArchiveStatus
            $userObj | Add-Member NoteProperty -Name "ArchiveState" -Value $Mbx.ArchiveState 
            $userObj | Add-Member NoteProperty -Name "ArchiveQuota" -Value $Mbx.ArchiveQuota
            $userObj | Add-Member NoteProperty -Name "ArchiveTotalItemSize" -Value $ArchiveTotalItemSize
            $userObj | Add-Member NoteProperty -Name "ArchiveTotalItemCount" -Value $ArchiveTotalItemCount

            $output += $UserObj  
            # Update Counters and Write Progress
            $i++
            if ($AllMailbox.Count -ge 1) {
                Write-Progress -Activity "Scanning Mailboxes . . ." -Status "Scanned: $i of $($AllMailbox.Count)" -PercentComplete ($i / $AllMailbox.Count * 100)
            }
        }

        $output | Export-csv -Path $CSVfile -NoTypeInformation -Encoding UTF8 #-Delimiter ","

        ; Break
    }

    2 {
        $i = 0
        $CSVfile = Read-Host "Enter the Path of CSV file (Eg. C:\DG.csv)" 

        $MailboxName = Read-Host "Enter the Mailbox name or Range (Eg. Mailboxname , Mi*,*Mik)"

        $AllMailbox = Get-mailbox $MailboxName -Resultsize Unlimited

        Foreach ($Mbx in $AllMailbox) {

            $Stats = Get-mailboxStatistics -Identity $Mbx.distinguishedname -WarningAction SilentlyContinue

            if ($Mbx.ArchiveName.count -eq "0") {
                $ArchiveTotalItemSize = $null
                $ArchiveTotalItemCount = $null
            }
            if ($Mbx.ArchiveName -ge "1") {
                $MbxArchiveStats = Get-mailboxstatistics $Mbx.distinguishedname -Archive -WarningAction SilentlyContinue
                $ArchiveTotalItemSize = $MbxArchiveStats.TotalItemSize
                $ArchiveTotalItemCount = $MbxArchiveStats.BigFunnelMessageCount
            }

            $userObj = New-Object PSObject

            $userObj | Add-Member NoteProperty -Name "Display Name" -Value $mbx.displayname
            $userObj | Add-Member NoteProperty -Name "Alias" -Value $Mbx.Alias
            $userObj | Add-Member NoteProperty -Name "SamAccountName" -Value $Mbx.SamAccountName
            $userObj | Add-Member NoteProperty -Name "RecipientType" -Value $Mbx.RecipientTypeDetails
            $userObj | Add-Member NoteProperty -Name "Recipient OU" -Value $Mbx.OrganizationalUnit
            $userObj | Add-Member NoteProperty -Name "Primary SMTP address" -Value $Mbx.PrimarySmtpAddress
            $userObj | Add-Member NoteProperty -Name "Email Addresses" -Value ($Mbx.EmailAddresses -join ",")
            $userObj | Add-Member NoteProperty -Name "Database" -Value $Stats.Database
            $userObj | Add-Member NoteProperty -Name "ServerName" -Value $Stats.ServerName
            $userObj | Add-Member NoteProperty -Name "TotalItemSize" -Value $Stats.TotalItemSize
            $userObj | Add-Member NoteProperty -Name "ItemCount" -Value $Stats.ItemCount
            $userObj | Add-Member NoteProperty -Name "DeletedItemCount" -Value $Stats.DeletedItemCount
            $userObj | Add-Member NoteProperty -Name "TotalDeletedItemSize" -Value $Stats.TotalDeletedItemSize
            $userObj | Add-Member NoteProperty -Name "ProhibitSendReceiveQuota-In-MB" -Value $Mbx.ProhibitSendReceiveQuota
            $userObj | Add-Member NoteProperty -Name "UseDatabaseQuotaDefaults" -Value $Mbx.UseDatabaseQuotaDefaults
            $userObj | Add-Member NoteProperty -Name "LastLogonTime" -Value $Stats.LastLogonTime
            $userObj | Add-Member NoteProperty -Name "ArchiveName" -Value ($Mbx.ArchiveName -join ",")
            $userObj | Add-Member NoteProperty -Name "ArchiveStatus" -Value $Mbx.ArchiveStatus
            $userObj | Add-Member NoteProperty -Name "ArchiveState" -Value $Mbx.ArchiveState 
            $userObj | Add-Member NoteProperty -Name "ArchiveQuota" -Value $Mbx.ArchiveQuota
            $userObj | Add-Member NoteProperty -Name "ArchiveTotalItemSize" -Value $ArchiveTotalItemSize
            $userObj | Add-Member NoteProperty -Name "ArchiveTotalItemCount" -Value $ArchiveTotalItemCount

            $output += $UserObj  
            # Update Counters and Write Progress
            $i++
            if ($AllMailbox.Count -ge 1) {
                Write-Progress -Activity "Scanning Mailboxes . . ." -Status "Scanned: $i of $($AllMailbox.Count)" -PercentComplete ($i / $AllMailbox.Count * 100) -ErrorAction SilentlyContinue
            }
        }

        $output | Export-csv -Path $CSVfile -NoTypeInformation -Encoding UTF8 #-Delimiter ","

        ; Break
    }

    Default { Write-Host "No matches found , Enter Options 1 or 2" -ForeGround "red" }

}
  1. 如果您还没有 (C:) 驱动器中的 scriptstemp 文件夹,请创建它们
  2. 将 MailboxSizeReport365.ps1 PowerShell 脚本保存在 C:\scripts 文件夹中

打开文件检查是否已解锁,防止运行脚本时出错。

[玩转系统] 使用 PowerShell 导出 Microsoft 365 邮箱大小报告

3.导出所有Microsoft 365大小报告

1. 运行以下 PowerShell 命令来启动脚本。

C:\scripts\.\MailboxSizeReport365.ps1

输出将显示 Mailbox Size Report 365 脚本,其中有 2 个选项。

PS C:\scripts\.\MailboxSizeReport365.ps1

Mailbox Size Report 365
----------------------------
1.Export to CSV File (OFFICE 365)

2.Enter the Mailbox Name with Wild Card (Export) (OFFICE 365)
 
Choose The Task:

首先,我们要显示选项1。导出到 CSV 文件 (OFFICE 365)

2. 输入1 并按Enter

PS C:\scripts\.\MailboxSizeReport365.ps1


Mailbox Size Report 365
----------------------------

1.Export to CSV File (OFFICE 365)

2.Enter the Mailbox Name with Wild Card (Export) (OFFICE 365)
               
Choose The Task: 1

该脚本将询问路径,因此当您导出 CSV 文件时,它将导出到该路径。

3.插入以下路径C:\temp\report365.csv并按Enter

PS C:\scripts\.\MailboxSizeReport365.ps1


Mailbox Size Report 365
----------------------------

1.Export to CSV File (OFFICE 365)

2.Enter the Mailbox Name with Wild Card (Export) (OFFICE 365)
               
Choose The Task: 1
Enter the Path of CSV file (Eg. C:\Report.csv): C:\temp\report365.csv

邮箱大小报告 365 脚本开始扫描组织中的所有邮箱。如果您有很多邮箱用户,则可能需要几分钟的时间。

之后,将创建列表,并将结果导出到 CSV 文件。完成后,您可以退出脚本。

您将在 C:\temp 中找到以 CSV 文件形式导出的列表。

[玩转系统] 使用 PowerShell 导出 Microsoft 365 邮箱大小报告

4.导出特定的Microsoft 365邮箱大小报告

您还可以导出一个特定的 Microsoft 365 邮箱或多个以相同字母或数字开头或结尾的邮箱。

1. 运行以下 PowerShell 命令来启动脚本。

C:\scripts\.\MailboxSizeReport365.ps1

输出将显示邮箱大小报告 365 脚本,其中包含 2 个选项。

我们想要显示选项2。输入带通配符的邮箱名称(导出)(OFFICE 365)

2. 输入数字2,然后按Enter

PS C:\scripts\.\MailboxSizeReport365.ps1

Mailbox Size Report 365
----------------------------
1.Export to CSV File (OFFICE 365)

2.Enter the Mailbox Name with Wild Card (Export) (OFFICE 365)
 
Choose The Task: 2

该脚本将询问路径,因此当您导出 CSV 文件时,它将导出到该路径。

3. 输入以下路径 C:\temp\report365project.csv 并按 Enter

PS C:\scripts\.\MailboxSizeReport365.ps1

Mailbox Size Report 365
----------------------------
1.Export to CSV File (OFFICE 365)

2.Enter the Mailbox Name with Wild Card (Export) (OFFICE 365)
 
Choose The Task: 2
Enter the Path of CSV file (Eg. C:\DG.csv): C:\temp\report365project.csv

现在,脚本将要求输入邮箱名称范围

您可以键入邮箱的全名或邮箱中带有星号 (*) 的字母和数字。在字母和数字之前、之后或之间使用星号。

我们将向您展示如何使用星号 (*) 的示例:

  1. 将 (*) 放在末尾可显示所有以 pr* 开头的邮箱
  2. 插入两个星号以显示包含这些字母 *pr* 的所有邮箱
  3. 将 (*) 放在开头可显示以 *pr 结尾的所有邮箱

4. 插入project* 以显示所有以project 名称开头的邮箱。

PS C:\scripts\.\MailboxSizeReport365.ps1

Mailbox Size Report 365
----------------------------

1.Export to CSV File (OFFICE 365)

2.Enter the Mailbox Name with Wild Card (Export) (OFFICE 365)
               
Choose The Task: 2
Enter the Path of CSV file (Eg. C:\DG.csv): C:\temp\report365project.csv
Enter the Mailbox name or Range (Eg. Mailboxname , Mi*,*Mik): project*

邮箱大小报告 365 PowerShell 脚本将开始扫描所有邮箱。完成后,您可以退出脚本。

检查列表是否成功导出到 CSV 文件。转到路径 C:\temp\ 并找到 report365project.csv 文件。

[玩转系统] 使用 PowerShell 导出 Microsoft 365 邮箱大小报告

5. 使用 Excel 打开 Microsoft 365 报告 CSV 文件

按照以下步骤将所有 CSV 数据加载到 Microsoft Excel 中:

  1. 打开 Microsoft Excel 并选择新建空白工作簿

[玩转系统] 使用 PowerShell 导出 Microsoft 365 邮箱大小报告

  1. 单击数据>来自文本/CSV

[玩转系统] 使用 PowerShell 导出 Microsoft 365 邮箱大小报告

  1. 查找并选择report365.csv 文件
  2. 点击导入

[玩转系统] 使用 PowerShell 导出 Microsoft 365 邮箱大小报告

  1. 检查所有列并单击加载

注意:如果您没有许可证,则无法找到该邮箱,因为它不会显示非活动邮箱。先分配许可证,然后才能获取邮箱。

[玩转系统] 使用 PowerShell 导出 Microsoft 365 邮箱大小报告

  1. Microsoft Excel 加载 CSV 文件中的数据并设置其格式
  2. 单击第一行中的箭头对列进行排序和过滤

[玩转系统] 使用 PowerShell 导出 Microsoft 365 邮箱大小报告

导出 Microsoft 365 邮箱大小报告很容易,您还可以删除不必要的信息。

了解更多:导出 Microsoft 365 用户许可证 »

结论

您了解了如何使用 PowerShell 在 Exchange Online 中导出 Microsoft 365 邮箱大小报告。使用 MailboxSizeReport365.ps1 PowerShell 脚本列出所有邮箱的邮箱大小数据。此脚本显示每个邮箱的信息,例如存储使用情况、项目大小和已删除项目大小。

您喜欢这篇文章吗?您可能还喜欢如何将 Microsoft 365 密码设置为永不过期。不要忘记关注我们并分享这篇文章。

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

取消回复欢迎 发表评论:

关灯