大家好,今天得到一个需求,就是统计全部用户邮箱容量,为向OFFICE365迁移做准备,因为我们在O365上买的容量是有限的,自己管理时没有做限制,有的用户都用了几十个G了。
这个需求我都不知道怎么用图形界面做,在网上查了一下,发现有的文档写得跟实际不太一样。其实就是一个POWERSHELL语句来实现。
官网链接是:
https://technet.microsoft.com/en-us/library/bb124612(v=exchg.160).aspx

我本来想如果这个命令支持 -filter 就好办了,我可以一个OU一个OU的弄,直到我发现了下面的这句话:
The Get-MailboxStatistics cmdlet requires at least one of the following parameters to complete successfully: Server, Database, or Identity.

就是必须指定一个服务器,或数据库或ID

于是乎,我就整了这样的一句话:
Get-MailboxStatistics -server 邮件服务器名 | where {$.ObjectClass -eq "Mailbox"} | Sort-Object TotalItemSize -Descending | ft @{label="User";Expression={$.DisplayName}},@{label="TotalSize";expression={$_.TotalItemSize}}
| Export-Csv a.csv

实际上,如查用ft后,在export-csv时就会出问题,结果是乱码,然后我就用
out-file 了,再把.txt导入到EXCEL上进行编辑就可以了。
实际上,我就是这么用的。

[PS] L:\>Get-MailboxStatistics -server 邮件服务器名|ft @{label="User";Expression={$.DisplayName}},@{label="TotalSize(MB)";
expression={$
.TotalItemSize.Value.ToMB()}},@{label="Database";expression={$_.database}} | Out-File josh.txt

这个肯定可以用,因为导出的容量显示的有GB,有MB,不好排序,所以调用了内部的一个函数转成MB,这样就好排序了。

要保证你对当前目录有写的权限,否则存不下文件来。