1: #=================================================================================================
2: # NAME: Get-MailboxCountPerDatabase.ps1
3: #
4: # AUTHOR: Dan B.
5: # EMAIL: Nerd@EverydayNerd.com
6: # DATE: 03/27/2011
7: # Version: 1.0
8: #
9: # COMMENT: Script to return the count of mailboxes on each server by database
10: #
11: #=================================== Change Log ==================================================
12: # Version 1.0
13: # -Initial script
14: # -Changed output to an array instead of just write-host
15: # -Added total count to single server
16: #
17: #=================================================================================================
18: # Script Paramaters to allow server name to be typed after the script name. If no Param, all servers are returned
19:
20: param([string] $Param )
21:
22: $Results = @()
23: $CountMB = 0
24:
25: if(!$param)
26: {
27: $Servers = Get-ExchangeServer | Where {$_.ServerRole -eq "Mailbox"} | Sort Name
28:
29: Foreach($Server in $Servers)
30: {
31: $dbs = Get-MailboxDatabase -server $Server | Sort Name
32:
33: foreach($db in $dbs)
34: {
35: $mb = Get-MailboxStatistics -Database $db | Where {$_.DisconnectDate -eq $null -and $_.ObjectClass -eq 'Mailbox'} | Measure-Object
36: $mbdis = Get-MailboxStatistics -Database $db | Where {$_.DisconnectDate -ne $null -and $_.ObjectClass -eq 'Mailbox'} | Measure-Object
37:
38: Write-Host "$($Server) `t $($db.name)`t $($a.count)"
39:
40: $Obj = New-Object PSObject
41: $Obj | Add-Member NoteProperty -Name "Server" -Value $Server
42: $Obj | Add-Member NoteProperty -Name "Database" -Value $db.Name
43: $Obj | Add-Member NoteProperty -Name "Mailboxes" -Value $mb.count
44: $Obj | Add-Member NoteProperty -Name "Disconnected Mailboxes" -Value $mbdis.count
45: $Results += $Obj
46: }
47: }
48: }
49: else
50: {
51: $server = $param
52: $dbs = Get-MailboxDatabase -server $Server | Sort Name
53:
54: foreach($db in $dbs)
55: {
56: $mb = Get-MailboxStatistics -Database $db | Where {$_.DisconnectDate -eq $null -and $_.ObjectClass -eq 'Mailbox'} | Measure-Object
57: $mbdis = Get-MailboxStatistics -Database $db | Where {$_.DisconnectDate -ne $null -and $_.ObjectClass -eq 'Mailbox'} | Measure-Object
58:
59: $Obj = New-Object PSObject
60: $Obj | Add-Member NoteProperty -Name "Server" -Value $Server
61: $Obj | Add-Member NoteProperty -Name "Database" -Value $db.Name
62: $Obj | Add-Member NoteProperty -Name "Mailboxes" -Value $mb.count
63: $Obj | Add-Member NoteProperty -Name "Disconnected Mailboxes" -Value $mbdis.count
64: $Results += $Obj
65: $countmb += $mb.count
66:
67: }
68: Write-Host
69: Write-Host "$($Server) has a total of $($CountMB) mailboxes" -ForegroundColor Green
70: }
71:
72: $Results | FT -AutoSize
73:
74: #===================================== End of Script ==============================================