Send mail

$SmtpClient=New-Object System.Net.Mail.SmtpClient
$Smtpclient.Host='SMTP.Telus.Net'
$From='Kaiming.Liao@GMAIL.COM'
$To='kmliao@hotmail.com'
$Title='This is a test mail.'
$Body='How are you doing?'
$SmtpClient.Send($From,$To,$Title,$Body)

Fetch credential for SMTP authentication

Using clear password

$credential=new-object System.Net.NetworkCredential('KMLIAO@hotmail.com','Password')
$SmtpClient.Credentials=$credential

$credential.UserName

KMLIAO@hotmail.com

$credential.Password

password

Using a standard login window

$credential=get-credential
$Username=$credential.UserName
$Password=$credential.GetNetworkCredential().Password

$credential1=New-Object System.Net.NetworkCredential($Username,$Password)
$SmtpClient.Credentials=$credential1


Reporting database size and mailbox count via email

$db=Get-MailboxDatabase -server Ex1
foreach ($objItem in $db){$objItem.edbfilepath}

IsPathInRootDirectory : False
PathName : C:\Program Files\Microsoft\Exchange Server\V14\Mailbox\Mailbox Database 2016968937\Mailbox Data
base 2016968937.edb
IsLocalFull : True
IsUnc : False
DriveName : C:
ServerName :

IsPathInRootDirectory : False
PathName : C:\Program Files\Microsoft\Exchange Server\V14\Mailbox\Vanarts\Vanarts.edb
IsLocalFull : True
IsUnc : False
DriveName : C:
ServerName :

IsPathInRootDirectory : False
PathName : C:\Program Files\Microsoft\Exchange Server\V14\Mailbox\TelusDataBase\TelusDataBase.edb
IsLocalFull : True
IsUnc : False
DriveName : C:
ServerName :

IsPathInRootDirectory : False
PathName : C:\Program Files\Microsoft\Exchange Server\V14\Mailbox\ShawDataBase\ShawDataBase.edb
IsLocalFull : True
IsUnc : False
DriveName : C:
ServerName :

$db=Get-MailboxDatabase "Shawdatabase"
$db.EdbFilePath

IsPathInRootDirectory : False
PathName : C:\Program Files\Microsoft\Exchange Server\V14\Mailbox\ShawDataBase\ShawDataBase.edb
IsLocalFull : True
IsUnc : False
DriveName : C:
ServerName :

$db.EdbFilePath.DriveName
C:
$db.EdbFilePath.DriveName.Remove(1)
C

$db.EdbFilePath.PathName
C:\Program Files\Microsoft\Exchange Server\V14\Mailbox\ShawDataBase\ShawDataBase.edb
$db.EdbFilePath.PathName.Remove(0,2)
\Program Files\Microsoft\Exchange Server\V14\Mailbox\ShawDataBase\ShawDataBase.edb

$Server="Ex1"
$path="\\" + $Server +"\" + $db.EdbFilePath.Drivename.Remove(1).ToString()+"$"+$db.EdbFilePath.PathName.Remove(0,2)

$path
\\Ex1\C$\Program Files\Microsoft\Exchange Server\V14\Mailbox\ShawDataBase\ShawDataBase.edb


$db=Get-MailboxDatabase "Shawdatabase"
$edbfilepath=$db.edbfilepath
$Server="Ex1"
$path="\\" + $Server +"\" + $db.EdbFilePath.Drivename.Remove(1).ToString()+"$"+$db.EdbFilePath.PathName.Remove(0,2)
$dbsize=Get-ChildItem $path
$EdbFilePath.PathName.Remove(0,2)

\Program Files\Microsoft\Exchange Server\V14\Mailbox\ShawDataBase\ShawDataBase.edb


$EdbFilePath.PathName.Length-6
$dbpath=$EdbFilePath.PathName.Remove(0,2).Remove($EdbFilePath.PathName.Length-6)
$dbpath

\Program Files\Microsoft\Exchange Server\V14\Mailbox\ShawDataBase\ShawDataBase

StringRemove


$db=Get-MailboxDatabase "Shawdatabase"
$edbfilepath=$db.edbfilepath
$Server="Ex1"
$path="\\" + $Server +"\" + $db.EdbFilePath.Drivename.Remove(1).ToString()+"$"+$db.EdbFilePath.PathName.Remove(0,2)
$dbsize=Get-ChildItem $path
$EdbFilePath.PathName.Remove(0,2)
$EdbFilePath.PathName.Length-6
$dbpath=$EdbFilePath.PathName.Remove(0,2).Remove($EdbFilePath.PathName.Length-6)
$dbpath
$mailboxcount=Get-mailboxStatistics -Database $db | Measure-Object
$mailboxcount

Count : 2
Average :
Sum :
Maximum :
Minimum :
Property :


Script file:Data.ps1

$BodyText=""
$ExchangeServer=Get-ExchangeServer | Where {$_.AdminDisplayVersion.major -eq 14 -and $_.IsMailboxServer -eq $True}

ForEach ($Server in $ExchangeServer)
{
$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=$objItem.EdbFilePath.PathName.Remove(0,2).Remove($EdbFilePath.PathName.Length-6)
$mailboxcount=Get-mailboxStatistics -Database $objItem | Measure-Object
$ReturnedObj=New-Object PSObject
$ReturnedObj | Add-Member NoteProperty -Name "Server" -Value $Server
$ReturnedObj | Add-Member NoteProperty -Name "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
$BodyText += $ReturnedObj
$BodyText +="<p>"
}
}

Run the script in EMS

data.ps1
@{Server=EX1; Database=Mailbox Database 2016968937; Size (MB)=168.06; Mailbox count=10}<br />@{Server=EX1;Database=Vanarts; Size (MB)=136.06; Mailbox count=15}<br />@{Server=EX1; Database=TelusDataBase; Size (MB)=136.06; Mailbox count=7}<br />@{Server=EX1; Database=ShawDataBase; Size (MB)=8.06; Mailbox count=2}<<br />


script: databaseSize.ps1

$BodyText=""
$ExchangeServer=Get-ExchangeServer | Where {$_.AdminDisplayVersion.major -eq 14 -and $_.IsMailboxServer -eq $True}

ForEach ($Server in $ExchangeServer)
{
$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=$objItem.EdbFilePath.PathName.Remove(0,2).Remove($EdbFilePath.PathName.Length-6)
$mailboxcount=Get-mailboxStatistics -Database $objItem | Measure-Object
$ReturnedObj=New-Object PSObject
$ReturnedObj | Add-Member NoteProperty -Name "Server" -Value $Server
$ReturnedObj | Add-Member NoteProperty -Name "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
$BodyText += $ReturnedObj
$BodyText +="<br />"
}
}
$BodyText=$BodyText.Replace("@{","")
$BodyText=$BodyText.Replace("}","")
$MailMessage = New-Object System.Net.Mail.MailMessage
$MailMessage.From ='Administrator@Lab.Com'
$MailMessage.To.Add('kmliao@hotmail.com')
$MailMessage.Subject = "Exchange 2010 Database Sizes"
$MailMessage.IsBodyHtml =$True
$mailMessage.Body =$BodyText
$SmtpClient=New-Object System.Net.Mail.Smtpclient
$Smtpclient.Host='SMTP.Telus.Net'
$SmtpClient.Send($MailMessage)

Run the script in EMS

Open Hotmail

Databasesize

psobject

The NoteProperty of PSObject accepts a static value.

-f Format operator

Enter the format string(s) on the left side of the operator and the object(s) to be formatted on the right side.

"{I,A:FS} {I,A:FS} {I,A:FS}.." -f "string0", "string1", "string2"...

Key:

I = Index of the item to display, 0=string0, 1=string1 etc.

A = Alignment. A positive number = right align n characters.
A negative number = left align n characters.
so {2,-25} will allocate 25 characters of horizontal space on the line, even if the string is only 1 character long.

FS value depends on the type of string0,string1,etc

:c Currency format
:e Scientific (exp) notation
:f Fixed point
f5 = fix to 5 places
:g Most compact format, fixed or sci
g5 = 5 significant digits
:n include culture separator for thousands 1,000.00
:p percentage
:r reversible precision
:x Hex format

Convert a DateTime to a 2 digit Hour/minute/second "{0:hh:0:mm}"

:hh
:mm
:ss

:ddd Convert a DateTime to Day of the Week

Example:

"{0,20:n1}{1,20:n2}{2,12:n3}"-f (17622.6304,14267.1872,845.4144)
17,622.6 14,267.19 845.414
"{0,20:n1}"-f (17622.6304,14267.1872,845.4144)
17,622.6

"{0:n2}"-f (176226304/1024KB)
168.06

position

As shown above, for only one string, the format doesnot include the positional index.