#Get-MailboxDatabaseinfo # # Collects all databases with status information # size, freespace, maiboxes, replicas # AvailableNewMailboxSpace is not accurate https://blog.icewolf.ch/archive/2014/07/18/availablenewmailboxspace-is-not-accurate.aspx # https://www.alitajran.com/get-mailbox-database-size-and-white-space/ [cmdletbinding()] param() Write-Verbose "Setting Scope to viewentireforest" Set-ADServerSettings -ViewEntireForest:$true Write-Verbose "Get List of Mailboxdatabases with Option -Status. May take a while" $databases = Get-MailboxDatabase -Status | where {!$_.Recovery} Write-Verbose "Create List of servers from database list" $serverlist = $databases | Select-Object servers -ExpandProperty servers | group name -NoElement Write-Verbose "Start Processing each database" foreach ($database in $databases) { Write-Verbose " Processing Database $($database.name)" Write-Verbose "Prepare ResultObject" $result = [pscustomobject][ordered]@{ Name = "" Server = "" DBPath = "" LogPath = "" DatabaseSizeGB = -1 AvailableNewMailboxSpace = -1 UsedGB = -1 FreePercent = -1 Mailboxcount = -1 } Write-Verbose "Adding Servernames Total $($serverlist.Count)" foreach ($server in $serverlist) { $result | Add-Member -MemberType NoteProperty -Name $server.name -Value 'na' } Write-Verbose " Adding Data to Result object" $result.Name = $database.name $result.Server = $database.servername $result.DBPath = $database.EdbFilePath $result.LogPath = $database.LogFolderPath $result.DatabaseSizeGB = $database.DatabaseSize.togb() $result.AvailableNewMailboxSpace = $database.AvailableNewMailboxSpace.togb() $result.UsedGB = ($database.DatabaseSize.togb() - $database.AvailableNewMailboxSpace.togb()) $result.FreePercent = [int]($database.AvailableNewMailboxSpace.tobytes() / $database.DatabaseSize.tobytes() *100) $result.Mailboxcount = -1 foreach ($server in $serverlist) { $result.($server.name) = ($database.ActivationPreference| where {$_.key -eq $server.name}).value } Write-Verbose "Get Mailbox Count for Database $($database.name)" $result.Mailboxcount = (get-recipient -database $database.name).count $result }