header1   header
header
header Register : : Login header
header
connector   connector
menuleft menuright
submenu   submenu
left
Exchange Mailbox Database size
Last Post 30 Nov 2010 02:23 AM by rihatums. 83 Replies.
Printer Friendly
  •  
  •  
  •  
  •  
  •  
Sort:
PrevPrev NextNext
You are not authorized to post a reply.
Page 2 of 3 << < 123 > >>
Author Messages
Karl MitschkeUser is Offline
Basic Member
Basic Member
Posts:451
Avatar

--
08 May 2008 11:46 AM
Try this, I have once again modified my code :)

Karl

############################################################## # # # Script to show the size and mailbox count of all databases # # # # Karl Mitschke 4/9/2008 # # # ############################################################## $exchangeservers = Get-ExchangeServer |where-object {$_.admindisplayversion.major -eq 8 -and $_.IsMailboxServer -eq $true } $AllServers = @() foreach ($server in $exchangeservers) { $db = Get-MailboxDatabase -server $server foreach ($objItem in $db) { $edbfilepath = $objItem.edbfilepath $path = "`\`\" + $server + "`\" + $objItem.EdbFilePath.DriveName.Remove(1).ToString() + "$"+ $objItem.EdbFilePath.PathName.Remove(0,2) $dbsize = Get-ChildItem $path $dbpath = $EdbFilePath.PathName.Remove(0,2).Replace(".edb","") $mailboxpath = "$server$dbpath" $mailboxcount = Get-MailboxStatistics -database "$mailboxpath" |Where {$_.DisconnectDate -eq $null -and $_.ObjectClass -eq 'Mailbox'} |measure-object $disconnectedmailboxcount = Get-MailboxStatistics -database "$mailboxpath" |Where {$_.DisconnectDate -ne $null} |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 "User Mailbox Count" -Value $mailboxcount.count $ReturnedObj | Add-Member NoteProperty -Name "Disconnected Mailbox Count" -Value $disconnectedmailboxcount.count $AllServers += $ReturnedObj } } $AllServers |export-csv c:\test.csv -notype -force
http://unlockpowershell.wordpress.com
Co-Author, Windows PowerShell 2.0 Bible
-join("6B61726C6D69747363686B65406D742E6E6574"-split"(?<=\G.{2})",19|%{[char][int]"0x$_"})
albogadoUser is Offline
New Member
New Member
Posts:12
Avatar

--
08 May 2008 12:46 PM

Still no love Karl...same error on each DB.  Still doesn't show MBX count or Disconnects

+     $disconnectedmailboxcount = Get-MailboxStatistics  <<<< -database "$mailboxpath"  |Where {$_.DisconnectDate -ne $
null} |measure-object
Get-MailboxStatistics : The specified mailbox database "CHMSG01\SG20DB\CHMSG01SG20DB1" does not exist.
At line:11 char:42

I did notice though that the code is referencing the DB path, not the name of the database;

PS C:\Scripts\Sydi> Get-Mailboxdatabase -server CHMSG01

Name                 Server
----                 ------
SYSADMIN01           CHMSG01
DEVELOPMENT01        CHMSG01
DEVELOPMENT02        CHMSG01
DEVELOPMENT03        CHMSG01
BACKOFFICE01         CHMSG01
BACKOFFICE02         CHMSG01
OPERATIONS01         CHMSG01
COMPLIANCE01         CHMSG01
EXECUTIVES01         CHMSG01
TRADERS01            CHMSG01
TRADERS02            CHMSG01
LONDON01             CHMSG01
OFFSHORE01           CHMSG01
SANFRAN01            CHMSG01
TOKYO01              CHMSG01
BACKOFFICE03         CHMSG01
DEVELOPMENT04        CHMSG01
DEVELOPMENT05        CHMSG01
TRADERS03            CHMSG01
CHMSG01SG20DB1       CHMSG01
EXECUTIVES02         CHMSG01

So after i specified the actual database name, your command does provide the mailbox count.  So it looks like I need to modify your code to look for DBname for the $mailboxcount variable.  I'll see if I can get it to work and post back. Thanks again

Karl MitschkeUser is Offline
Basic Member
Basic Member
Posts:451
Avatar

--
08 May 2008 01:16 PM
What Storage group is CHMSG01SG20DB1 in?
http://unlockpowershell.wordpress.com
Co-Author, Windows PowerShell 2.0 Bible
-join("6B61726C6D69747363686B65406D742E6E6574"-split"(?<=\G.{2})",19|%{[char][int]"0x$_"})
albogadoUser is Offline
New Member
New Member
Posts:12
Avatar

--
08 May 2008 01:23 PM

Got it working Karl; 

 

$exchangeservers = Get-ExchangeServer |where-object {$_.admindisplayversion.major -eq 8 -and $_.IsMailboxServer -eq $true }
$AllServers = @()
foreach ($server in $exchangeservers)
{
    $db = Get-MailboxDatabase -server $server
    foreach ($objItem in $db)
    {
    $edbfilepath = $objItem.edbfilepath
    $path = "`\`\" + $server + "`\" + $objItem.EdbFilePath.DriveName.Remove(1).ToString() + "$"+ $objItem.EdbFilePath.PathName.Remove(0,2)
    $dbsize = Get-ChildItem $path
 $dbpath = $EdbFilePath.PathName.Remove(0,2).remove($EdbFilePath.PathName.length-6)
 $mailboxpath = "$server$dbpath"
 $mailboxcount = Get-MailboxStatistics -database $objItem |where {$_.DisconnectDate -eq $null -and $_.ObjectClass -eq 'Mailbox'} |Measure-Object
 $disconnectedmailboxcount = Get-MailboxStatistics -database $objItem  |Where {$_.DisconnectDate -ne $null} |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 "User Mailbox Count" -Value $mailboxcount.count
 $ReturnedObj | Add-Member NoteProperty -Name "Disconnected Mailbox Count" -Value $disconnectedmailboxcount.count
    $AllServers += $ReturnedObj
    }
}

$AllServers |Export-Csv c:\test.csv -notype -force

 

All I did was change the "-database" references in the $mailboxcount and $disconnectedmailboxcount  variables to refer to the previously declared variable $objitem.  Works like a champ now!  Thanks alot dude.

 

majorgeekUser is Offline
New Member
New Member
Posts:2
Avatar

--
25 Jun 2008 02:38 AM

This is a great script;

Hi Karl thanks for your great work. It helps me a lot to provision my 14 mailbox servers.
Can you add in more columns in the results? such as database mount status, last backup status, mailbox retention, prohibit send quota, prohibit sendreceive quota,issuewarningquota.

ziemborUser is Offline
New Member
New Member
Posts:7
Avatar

--
25 Jun 2008 04:32 AM
## http://powershellcommunity.org/Foru...fault.aspx
##

$exchangeservers = Get-ExchangeServer |where-object {$_.admindisplayversion.major -eq 8 -and $_.IsMailboxServer -eq $true }
$AllServers = @()
foreach ($server in $exchangeservers)
{
$db = Get-MailboxDatabase -Status -server $server
foreach ($objItem in $db)
{
$edbfilepath = $objItem.edbfilepath
$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}" -f ($dbsize.Length/1024KB))
$ReturnedObj | Add-Member NoteProperty -Name "Mailbox Count" -Value $mailboxcount.count
$ReturnedObj | Add-Member NoteProperty -Name "LastFullBackup" -Value $objItem.LastFullBackup
$ReturnedObj | Add-Member NoteProperty -Name "LastIncrementalBackup" -Value $objItem.LastIncrementalBackup
$ReturnedObj | Add-Member NoteProperty -Name "BackupInProgess" -Value $objItem.BackupInProgess
$ReturnedObj | Add-Member NoteProperty -Name "Mounted" -Value $objItem.Mounted
$ReturnedObj | Add-Member NoteProperty -Name "IssueWarningQuota" -Value $objItem.IssueWarningQuota

$AllServers += $ReturnedObj
}
}

$AllServers
ziemborUser is Offline
New Member
New Member
Posts:7
Avatar

--
25 Jun 2008 04:38 AM

BTW. why

$exchangeservers = Get-ExchangeServer |where-object {$_.admindisplayversion.major -eq 8 -and $_.IsMailboxServer -eq $true }

instead
$exchangeservers = Get-MailboxServer
?
 

 

 

ziemborUser is Offline
New Member
New Member
Posts:7
Avatar

--
25 Jun 2008 06:23 AM
Some fix and addtional info about free space on local volume:
cls
## http://powershellcommunity.org/Foru...fault.aspx
##

$exchangeservers = Get-MailboxServer 
#Get-ExchangeServer |where-object {$_.admindisplayversion.major -eq 8 -and $_.IsMailboxServer -eq $true }
$Jumbo = 1024 * 1024 
$AllServers = @()
foreach ($server in $exchangeservers)
{
    $db = Get-MailboxDatabase -Status -server $server
    foreach ($objItem in $db)
    {
    $edbfilepath = $objItem.edbfilepath
    $path = "`\`\" + $server + "`\" + $objItem.EdbFilePath.DriveName.Remove(1).ToString() + "$"+ $objItem.EdbFilePath.PathName.Remove(0,2)
    $dbsize = Get-ChildItem $path    
	
	$DiskObj = get-WmiObject Win32_LogicalDisk -computerName $server | Where-Object { $_.DriveType -eq 3 -and $_.DeviceID -ieq  $objItem.EdbFilePath.DriveName}
	$FreeOnStorage = [int]($DiskObj.freespace / $Jumbo)
	$FreeOnStorageProc = [float](($DiskObj.freespace /$Jumbo) / ($DiskObj.size / $Jumbo))

    $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}" -f ($dbsize.Length/1024KB))
    $ReturnedObj | Add-Member NoteProperty -Name "Mailbox Count" -Value $mailboxcount.count
	$ReturnedObj | Add-Member NoteProperty -Name "LastFullBackup" -Value $objItem.LastFullBackup
	$ReturnedObj | Add-Member NoteProperty -Name "LastIncrementalBackup" -Value $objItem.LastIncrementalBackup
	$ReturnedObj | Add-Member NoteProperty -Name "BackupInProgess" -Value $objItem.BackupInProgess
	$ReturnedObj | Add-Member NoteProperty -Name "Mounted" -Value $objItem.Mounted          
	$ReturnedObj | Add-Member NoteProperty -Name "IssueWarningQuota" -Value $objItem.IssueWarningQuota    
	$ReturnedObj | Add-Member NoteProperty -Name "ProhibitSendQuota" -Value $objItem.ProhibitSendQuota
	$ReturnedObj | Add-Member NoteProperty -Name "ProhibitSendReceiveQuota" -Value $objItem.ProhibitSendReceiveQuota
	$ReturnedObj | Add-Member NoteProperty -Name "MailboxRetention" -Value $objItem.MailboxRetention                                                  
	$ReturnedObj | Add-Member NoteProperty -Name "FreeOnStorage" -Value $FreeOnStorage 
	$ReturnedObj | Add-Member NoteProperty -Name "FreeOnStorageProc" -Value $FreeOnStorageProc   
    $AllServers += $ReturnedObj
    }
}

$AllServers | ft -AutoSize
#| export-csv c:\test.csv -notype -force
Karl MitschkeUser is Offline
Basic Member
Basic Member
Posts:451
Avatar

--
25 Jun 2008 06:44 AM
ziembor;

I was lazy, and modified this line from another script:
$exchangeservers = Get-ExchangeServer |where-object {$_.admindisplayversion.major -eq 8}
http://unlockpowershell.wordpress.com
Co-Author, Windows PowerShell 2.0 Bible
-join("6B61726C6D69747363686B65406D742E6E6574"-split"(?<=\G.{2})",19|%{[char][int]"0x$_"})
ziemborUser is Offline
New Member
New Member
Posts:7
Avatar

--
25 Jun 2008 07:01 AM

next version, including PF file.

## http://powershellcommunity.org/Foru...fault.aspx
##

$AllServers = @()
$mbdb = Get-MailboxDatabase -Status
$pfdb = Get-PublicFolderDatabase -Status
$db = $mbdb + $pfdb
foreach ($objItem in $db)
{
$server=$objItem.ServerName
$edbfilepath = $objItem.edbfilepath
$path = "`\`\" + $objItem.ServerName + "`\" + $objItem.EdbFilePath.DriveName.Remove(1).ToString() + "$"+ $objItem.EdbFilePath.PathName.Remove(0,2)
$dbsize = Get-ChildItem $path
$DiskObj = get-WmiObject Win32_LogicalDisk -computerName $objItem.ServerName | Where-Object { $_.DeviceID -ieq $objItem.EdbFilePath.DriveName }
$FreeOnStorage = [int]($DiskObj.freespace / 1024KB)
$FreeOnStorageProc = [float](($DiskObj.freespace /1024KB) / ($DiskObj.size / 1024KB))
$start = $path.LastIndexOf('\')
$dbpath = $path.Substring($start +1).remove($path.Substring($start +1).length -4)
$mailboxpath = "$server\$dbpath"
if($objItem.ObjectClass -ilike '*msExchPrivateMD*') { $mailboxcount = Get-MailboxStatistics -database "$mailboxpath" |measure-object } else { $mailboxcount = 0 }
$ReturnedObj = New-Object PSObject
$ReturnedObj | Add-Member NoteProperty -Name "DatabaseIdentity" -Value $objItem.Identity
$ReturnedObj | Add-Member NoteProperty -Name "SizeMB" -Value ("{0}" -f ($dbsize.Length/1024KB))
$ReturnedObj | Add-Member NoteProperty -Name "MailboxCount" -Value $mailboxcount.count
$ReturnedObj | Add-Member NoteProperty -Name "LastFullBackup" -Value $objItem.LastFullBackup
$ReturnedObj | Add-Member NoteProperty -Name "LastIncrementalBackup" -Value $objItem.LastIncrementalBackup
$ReturnedObj | Add-Member NoteProperty -Name "BackupInProgess" -Value $objItem.BackupInProgess
$ReturnedObj | Add-Member NoteProperty -Name "Mounted" -Value $objItem.Mounted
$ReturnedObj | Add-Member NoteProperty -Name "IssueWarningQuota" -Value $objItem.IssueWarningQuota
$ReturnedObj | Add-Member NoteProperty -Name "ProhibitSendQuota" -Value $objItem.ProhibitSendQuota
$ReturnedObj | Add-Member NoteProperty -Name "ProhibitSendReceiveQuota" -Value $objItem.ProhibitSendReceiveQuota
$ReturnedObj | Add-Member NoteProperty -Name "MailboxRetention" -Value $objItem.MailboxRetention
$ReturnedObj | Add-Member NoteProperty -Name "FreeOnStorage" -Value $FreeOnStorage
$ReturnedObj | Add-Member NoteProperty -Name "FreeOnStorageProc" -Value $FreeOnStorageProc
$AllServers += $ReturnedObj
}

$AllServers | ft -AutoSize
Karl MitschkeUser is Offline
Basic Member
Basic Member
Posts:451
Avatar

--
25 Jun 2008 07:07 AM
mjgeek;

Here you go:
$exchangeservers = Get-MailboxServer $AllServers = @() foreach ($server in $exchangeservers) { $db = Get-MailboxDatabase -Status -server $server foreach ($objItem in $db) { $edbfilepath = $objItem.edbfilepath $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}" -f ($dbsize.Length/1024KB)) $ReturnedObj | Add-Member NoteProperty -Name "Mailbox Count" -Value $mailboxcount.count $ReturnedObj | Add-Member NoteProperty -Name "LastFullBackup" -Value $objItem.LastFullBackup $ReturnedObj | Add-Member NoteProperty -Name "LastIncrementalBackup" -Value $objItem.LastIncrementalBackup $ReturnedObj | Add-Member NoteProperty -Name "BackupInProgess" -Value $objItem.BackupInProgess $ReturnedObj | Add-Member NoteProperty -Name "Mounted" -Value $objItem.Mounted $ReturnedObj | Add-Member NoteProperty -Name "MailboxRetention" -Value $objItem.MailboxRetention $ReturnedObj | Add-Member NoteProperty -Name "IssueWarningQuota" -Value $objItem.IssueWarningQuota $ReturnedObj | Add-Member NoteProperty -Name "ProhibitSendQuota" -Value $objItem.ProhibitSendQuota $ReturnedObj | Add-Member NoteProperty -Name "ProhibitSendReceiveQuota" -Value $objItem.ProhibitSendReceiveQuota $AllServers += $ReturnedObj } } $AllServers |Export-Csv c:\test.csv -notype -force
if you just paste this into a EMS window, you can then see what other information is redily available by typing this:
$objItem |fl
http://unlockpowershell.wordpress.com
Co-Author, Windows PowerShell 2.0 Bible
-join("6B61726C6D69747363686B65406D742E6E6574"-split"(?<=\G.{2})",19|%{[char][int]"0x$_"})
majorgeekUser is Offline
New Member
New Member
Posts:2
Avatar

--
25 Jun 2008 07:25 AM
Hi Karl,

It really works,
Thank you for your great help.
JazoUser is Offline
New Member
New Member
Posts:58
Avatar

--
01 Dec 2008 03:47 AM
Hi, This script looks really great and would like to get it to work. I'm getting a error for all mailservers:

Get-ChildItem : Cannot find path '\\"mailservername"\G$\Exchange\Storage Group 1 dat
abases\Mailbox Database.edb' because it does not exist.
At C:\Program Files\Microsoft\Exchange Server\Scripts\mailboxstoresize.ps1:10 c
har:28
+     $dbsize = Get-ChildItem  <<<< $path
Get-MailboxStatistics : The specified mailbox database ""mailservername"\Mailbox Dat
abase" does not exist.
At C:\Program Files\Microsoft\Exchange Server\Scripts\mailboxstoresize.ps1:14 c
har:42
+     $mailboxcount = Get-MailboxStatistics  <<<< -database "$mailboxpath" |mea
sure-object  

Karl MitschkeUser is Offline
Basic Member
Basic Member
Posts:451
Avatar

--
01 Dec 2008 07:15 AM
Jazo;

Can you paste the whole program into a console window, and then tell me what $path returns?

Is that a valid path to one of your databases?

Karl
http://unlockpowershell.wordpress.com
Co-Author, Windows PowerShell 2.0 Bible
-join("6B61726C6D69747363686B65406D742E6E6574"-split"(?<=\G.{2})",19|%{[char][int]"0x$_"})
JazoUser is Offline
New Member
New Member
Posts:58
Avatar

--
01 Dec 2008 07:59 AM
Yeah, I think I know where you are going with this :-) I think I've got it fixed. One more question. How can I specify like only 2 servers to check and not all?

Thanks for your reply :-)

Karl MitschkeUser is Offline
Basic Member
Basic Member
Posts:451
Avatar

--
01 Dec 2008 08:08 AM
Jazo;

Substitute this: $exchangeservers = @("server1", "server2")

For this: $exchangeservers = Get-MailboxServer

http://unlockpowershell.wordpress.com
Co-Author, Windows PowerShell 2.0 Bible
-join("6B61726C6D69747363686B65406D742E6E6574"-split"(?<=\G.{2})",19|%{[char][int]"0x$_"})
philltxUser is Offline
New Member
New Member
Posts:50
Avatar

--
01 Dec 2008 03:12 PM
How do you look up where to find the Drivename and Pathname property under the $objItem.EdbFilePath ?
Karl MitschkeUser is Offline
Basic Member
Basic Member
Posts:451
Avatar

--
01 Dec 2008 03:23 PM
$objItem.EdbFilePath.PathName contains the drive and path as S:\SG7\MBX7.edb

If you mean how can you see this on the server, simply use My Computer.

If I haven't answered your question, please ask again
http://unlockpowershell.wordpress.com
Co-Author, Windows PowerShell 2.0 Bible
-join("6B61726C6D69747363686B65406D742E6E6574"-split"(?<=\G.{2})",19|%{[char][int]"0x$_"})
philltxUser is Offline
New Member
New Member
Posts:50
Avatar

--
01 Dec 2008 03:33 PM
What i'm trying to do is modify the script to display all email accounts with their corresponding sizes, itemcounts, totalitemsize, email address, and displayname instead of

just like running get-mailboxstatistics | ft servername, displayname, itemcount, totalitemsize

how would I go about doing this?

thanks in advance
Karl MitschkeUser is Offline
Basic Member
Basic Member
Posts:451
Avatar

--
01 Dec 2008 03:49 PM
Well, the script here is for getting mailbox database information.

You gave an example of how to get the information you are looking for.

If you want to do that for every mailbox on all your servers, you could do this:

$exchangeservers = Get-MailboxServer
$AllUsers = @()
foreach ($server in $exchangeservers)
{
$AllUsers += Get-Mailbox -Server $server |Get-MailboxStatistics |select servername,displayname,itemcount,totalitemsize
}
$AllUsers |Export-Csv c:\test.csv -NoTypeInformation
http://unlockpowershell.wordpress.com
Co-Author, Windows PowerShell 2.0 Bible
-join("6B61726C6D69747363686B65406D742E6E6574"-split"(?<=\G.{2})",19|%{[char][int]"0x$_"})
philltxUser is Offline
New Member
New Member
Posts:50
Avatar

--
01 Dec 2008 03:52 PM
oh cool... how do i go about pulling the smtp address?
JazoUser is Offline
New Member
New Member
Posts:58
Avatar

--
02 Dec 2008 04:01 AM
Thanks Karl. It working for me now too, you da man!
JazoUser is Offline
New Member
New Member
Posts:58
Avatar

--
02 Dec 2008 06:47 AM

Hey Karl, I have one more question.

Running Script:
$exchangeservers = @("Server1", "Server2")
$AllServers = @()
foreach ($server in $exchangeservers)
{
    $db = Get-MailboxDatabase -Status -server $server
    foreach ($objItem in $db)
    {   
    $edbfilepath = $objItem.edbfilepath
    $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}" -f ($dbsize.Length/1024KB))
    $ReturnedObj | Add-Member NoteProperty -Name "Mailbox Count" -Value $mailboxcount.count
    $ReturnedObj | Add-Member NoteProperty -Name "LastFullBackup" -Value $objItem.LastFullBackup
    $ReturnedObj | Add-Member NoteProperty -Name "LastIncrementalBackup" -Value $objItem.LastIncrementalBackup
    $ReturnedObj | Add-Member NoteProperty -Name "BackupInProgess" -Value $objItem.BackupInProgess
    $ReturnedObj | Add-Member NoteProperty -Name "Mounted" -Value $objItem.Mounted
    $ReturnedObj | Add-Member NoteProperty -Name "MailboxRetention" -Value $objItem.MailboxRetention
    $ReturnedObj | Add-Member NoteProperty -Name "IssueWarningQuota" -Value $objItem.IssueWarningQuota
    $ReturnedObj | Add-Member NoteProperty -Name "ProhibitSendQuota" -Value $objItem.ProhibitSendQuota
    $ReturnedObj | Add-Member NoteProperty -Name "ProhibitSendReceiveQuota" -Value $objItem.ProhibitSendReceiveQuota
    $AllServers += $ReturnedObj   
    }
}

$ALLServers = $AllServers.Replace("@{","")
$ALLServers = $AllServers.Replace("}","`n")
function sendmail($body)
{
    $SmtpClient = new-object system.net.mail.smtpClient
    $MailMessage = New-Object system.net.mail.mailmessage
    $SmtpClient.Host = ""
    $mailmessage.from = "spamfree@domain.com"
    $mailmessage.To.add("user@domain.com")
    $mailmessage.Subject = “Exchange 2007 Database Sizes”
    $MailMessage.IsBodyHtml = $false
    $mailmessage.Body = $body
   
    $smtpclient.Send($mailmessage)
}

sendmail $ALLServers

but I'm getting an error:

Method invocation failed because [System.Object[]] doesn't contain a method nam
ed 'Replace'.
At C:\Program Files\Microsoft\Exchange Server\Scripts\mailboxstoresize.ps1:31 c
har:34
+ $ALLServers = $AllServers.Replace( <<<< "@{","")
Method invocation failed because [System.Object[]] doesn't contain a method nam
ed 'Replace'.
At C:\Program Files\Microsoft\Exchange Server\Scripts\mailboxstoresize.ps1:32 c
har:34
+ $ALLServers = $AllServers.Replace( <<<< "}","`n")
Exception calling "Send" with "1" argument(s): "Failure sending mail."
At C:\Program Files\Microsoft\Exchange Server\Scripts\mailboxstoresize.ps1:44 c
har:21
+     $smtpclient.Send( <<<< $mailmessage)

Thanks for your help.

Karl MitschkeUser is Offline
Basic Member
Basic Member
Posts:451
Avatar

--
02 Dec 2008 07:22 AM
Jazo;

1) Try commenting out the two lines that start "$ALLServers = $AllServers.Replace"

2) Are you sure you have the right smtp server in "$SmtpClient.Host = "

Karl
http://unlockpowershell.wordpress.com
Co-Author, Windows PowerShell 2.0 Bible
-join("6B61726C6D69747363686B65406D742E6E6574"-split"(?<=\G.{2})",19|%{[char][int]"0x$_"})
JazoUser is Offline
New Member
New Member
Posts:58
Avatar

--
02 Dec 2008 07:33 AM
Ahhh...my bad I still had the < > marks in the smtp host name. The smtp adresse is now correct. I also took out the 2 lines you suggested in point 1. Now I'm getting an email but it is empty. No data.
Karl MitschkeUser is Offline
Basic Member
Basic Member
Posts:451
Avatar

--
02 Dec 2008 07:54 AM
Yeah, me too.

Change $MailMessage.IsBodyHtml = $False to $MailMessage.IsBodyHtml = $True
Then, change "sendmail $ALLServers" to:
$body = $allservers |sort-object "Server\StorageGroup\Database" |convertto-html
sendmail $body

That should get you working - i don't have time to look at the original and see what happened.

http://unlockpowershell.wordpress.com
Co-Author, Windows PowerShell 2.0 Bible
-join("6B61726C6D69747363686B65406D742E6E6574"-split"(?<=\G.{2})",19|%{[char][int]"0x$_"})
JazoUser is Offline
New Member
New Member
Posts:58
Avatar

--
02 Dec 2008 10:14 AM
Thanks again Karl, for your expertise. It works fine now. If I wanted to run this script like once a week, what would you recommend with powershell. The at command?
Karl MitschkeUser is Offline
Basic Member
Basic Member
Posts:451
Avatar

--
02 Dec 2008 10:18 AM
Do something like this in Scheduled Tasks:

C:\WINDOWS\system32\windowspowershell\v1.0\powershell.exe
http://unlockpowershell.wordpress.com
Co-Author, Windows PowerShell 2.0 Bible
-join("6B61726C6D69747363686B65406D742E6E6574"-split"(?<=\G.{2})",19|%{[char][int]"0x$_"})
luisg67User is Offline
New Member
New Member
Posts:1
Avatar

--
26 Jun 2009 05:45 PM
Anyway to be able to get the mailboxdatabase size on a Exchange Cluster?
sinishUser is Offline
New Member
New Member
Posts:3
Avatar

--
02 Sep 2009 01:37 PM
Karl this is absolutely awesome script - powerful and rather simple.

For us it seems to be working fine on Server 2003 Exchange CCR cluster, but it fails when it reaches Server 2008 mailbox clusters. The error is that it cannot find D$ admin share using the cluster name \\clustername\d$. I confirmed that I cannot manually mount this share either, as I can do it on 2003 clustered servers. Windows reports that server "clustername" exists, but share D$ cannot be found. When mapping to the cluster nodes directly, share is available.

So seems to be Server 2008 clustering "feature", however I cannot seem to find anyone else that have this problem.

Is there anyone who can use this script on 2008 cluster? I would like to use the script as is, but might have to modify it by hardcoding node names instead.

Thanks.

ST
You are not authorized to post a reply.
Page 2 of 3 << < 123 > >>


Active Forums 4.3
right
footer   footer
footer Sponsored by Quest Software • SAPIEN Technologies • Compellent • Microsoft Windows Server 2008 R2 footer
footer   footer