作为邮件系统的管理员,了解自己整个邮件系统的资源使用和分配情况,对邮件系统的管理和优化都是非常有帮助的。在众多数据中,可能你需要知道你的整个组织已经分配了多少个邮箱,或者你组织中某台服务器承载了多少邮箱,更甚者为某个邮箱数据库或各OU中分配了多少邮箱。
通过Exchange 2010的EMS很容易可以做到上述数据的查询,并且只需简单的查询命令,很快满足你的需求,无需编写复杂的脚本。具体思路如下:
为了查询整个组织中所有的邮箱数,首先我们需要使用Get-Mailbox的功能将所有邮箱列出,然后使用所得结果列表中的“唯一列”作为分组依据进行Group-Object分组统计,这里可以使“Alias”或者“GUID”。得到的结果肯定是每组“1”个“Count”。那么有多少个“1”就有多少个邮箱,因此可以再将所得结果列表中的“Count”列作为分组依据进行第二次Group-Object分组统计,其输出结果的“Count”字段即为整个组织的邮箱数。
关于Get-Mailbox更多可参考:http://technet.microsoft.com/zh-cn/library/bb123685.aspx
关于Group-Object更多可参考:http://technet.microsoft.com/zh-cn/library/dd347561.aspx
具体命令如下:
Get-Mailbox –ResultSize unlimited | Group-Object –Property:Alias | Group-Object –Property:Count | Select Count
或:
Get-Mailbox –ResultSize unlimited | Group-Object –Property:GUID | Group-Object –Property:Count | Select Count
注:虽然上述操作使用的两次Group-Object分组统计,在处理效率上有所降低,但是对于“恐惧”复杂脚本编写的管理员来讲还是可取的。另外,在此也是抛砖引玉的介绍一种使用PowerShell的方法和技巧。
如果需要查询组织中各台Mailbox角色服务器上的邮箱数分别是多少,那就更加简单了,只需要在Get-Mailbox所得结果列表中的“ServerName”作为分组依据进行Group-Object分组统计。具体命令如下:
Get-Mailbox –ResultSize unlimited | Group-Object –Property:ServerName | Select Name,Count
如果需要查询组织中各邮箱存储上分别存储的邮箱个数,可以在Get-Mailbox所得结果列表中的“DataBase”作为分组依据进行Group-Object分组统计。具体命令如下:
Get-Mailbox –ResultSize unlimited | Group-Object –Property:Database | Select Name,Count
当然以此类推,需要查询各OU中的邮箱分配个数,可以在Get-Mailbox所得结果列表中的“OrganizationUnit”作为分组依据进行Group-Object分组统计。具体命令如下:
Get-Mailbox –ResultSize unlimited | Group-Object –Property: OrganizationUnit | Select Name,Count