获取Exchange中所以数据库名称-数据库EDB大小-用户数量

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了获取Exchange中所以数据库名称-数据库EDB大小-用户数量相关的知识,希望对你有一定的参考价值。

在客户环境梳理架构发现,有一些exchange 2013后端服务器负载很高,一部分原因是数据库内用户的活跃度很高,邮箱使用率很高,另部分原因是版本为CU10内容索引的noderunner服务会占用比较大的开销,想进行一些优化,将一些负载较高的BE后端数据库用户迁移到其他负载较低的后端BE去,但是怎么迁移,迁移到哪一个负载低的数据库就比较尴尬,经过各种谷歌搜索整理了一个脚本可以帮助做这个事。

当时exchange建设时为每个数据库都分布了大概500个用户,但每一个邮箱用户的使用情况都是不一样的,管理员也没有办法进行控制,因为是用户层面的行为,就会造成每个BE后端服务器的负载不均衡。

通过一个powershell脚本能够获得到每个数据库的名字、大小以及用户数量并且直接输出成csv比较友好的界面,可以帮助我们进行数据性能的优化

将脚本分享出来希望大家有用,适用于exchange 2013环境,其他版本请自行测试

输出信息如下:

技术分享





Add-PSSnapin microsoft.exchange*

add-pssnapin Microsoft.Exchange.Management.PowerShell.E2010

#$MailboxDatabases=Get-MailboxDatabase -Status | select Name,DatabaseSize

$dbs = Get-MailboxDatabase -Status| Where {$_.Recovery -ne $true}

$dbs = $dbs | sort-object name

$output=‘C:\databaseSize.csv‘

$title="databasename,Servername,databasesize,count"

$title>>$output

foreach ($db in $dbs)

     #Get the mailbox count for the database

     $mailboxes = Get-Mailbox -database $db -IgnoreDefaultScope -Resultsize Unlimited -erroraction silentlycontinue

     $mbcount = $mailboxes.count


    $dbsize=$db| select Server,DatabaseSize

    #$databaseSize=$dbsize.DatabaseSize.ToString().Split("GB")[0]

    $databaseSize=$dbsize.DatabaseSize.ToBytes()/1024/1024/1024 

    $message="$($db.name),$($dbsize.Server),$databaseSize,$($mailboxes.count)"

     $message>>$output

     

}


本文出自 “追梦赤子心” 博客,请务必保留此出处http://zmczx.blog.51cto.com/7689019/1952956

以上是关于获取Exchange中所以数据库名称-数据库EDB大小-用户数量的主要内容,如果未能解决你的问题,请参考以下文章

exchange灾难恢复篇——邮件恢复

通过EDB-Mtk工具从Oracle向PostgreSQL迁移数据

Redis 持久化(EDB 与AOF)

邮件服务器邮件存储和日志的介绍

用于不知名文件夹名称的 Exchange Web 服务 FolderId

使用 OleDb 从 Excel 文档中获取第一张工作表,而不考虑工作表名称