Thursday, October 23, 2008

All Stores Database Size and Mailbox Count

$exchangeservers = Get-ExchangeServer where-object {$_.Name -imatch "CCR" } Sort Name

$AllServers = @()

foreach ($server in $exchangeservers)

{

$db = Get-MailboxDatabase -server $server

foreach ($objItem in $db)

{

$edbfilepath = $objItem.edbfilepath

$Drive = $edbfilepath.DriveName

$DiskUsage = Get-WmiObject win32_logicaldisk -computerName $Server where-Object {$_.DeviceID -match $Drive}

$path = "`\`\" + $server + "`\" + $objItem.EdbFilePath.DriveName.Remove(1).ToString() + "$"+ $objItem.EdbFilePath.PathName.Remove(0,2)

$dbsize = Get-ChildItem $path

$start = $path.LastIndexOf('\')

$dbpath = $path.Substring($start +1).remove($path.Substring($start +1).length -4)

$mailboxpath = "$server\$dbpath"

$mailboxcount = Get-MailboxStatistics -database "$mailboxpath" measure-object

$ReturnedObj = New-Object PSObject

$ReturnedObj Add-Member NoteProperty -Name "Server\StorageGroup\Database" -Value $objItem.Identity

$ReturnedObj Add-Member NoteProperty -Name "Size (MB)" -Value ("{0:n2}" -f ($dbsize.Length/1024KB))

$ReturnedObj Add-Member NoteProperty -Name "Mailbox Count" -Value $mailboxcount.count

$ReturnedObj Add-Member NoteProperty -Name "Drive" -Value $Drive

$ReturnedObj Add-Member NoteProperty -Name "Disk Space (MB)" -Value ("{0:n0}" -f ($DiskUsage.Size/1024KB))

$ReturnedObj Add-Member NoteProperty -Name "Free Space (MB)" -Value ("{0:n0}" -f ($DiskUsage.FreeSpace/1024KB))

[float]$tempfloat = ($DiskUsage.FreeSpace/1000000)/($DiskUsage.Size/1000000)

$tempPercent = [math]::round(($tempfloat * 100),2)

$ReturnedObj Add-Member NoteProperty -Name "% Free" -Value $tempPercent

$AllServers += $ReturnedObj

}

}

$AllServers export-csv c:\DatabaseSize_MailBoxCount.csv -notype –force