Recently I reposted an article written by a
fellow MCM about BlackBerry and Exchange 2010 Delivery Delays. There has been a
lot of work on this issue and I thought it wise to post an update. Microsoft and
BlackBerry have all but fixed this problem up until last week. Microsoft even
went as far as posting a guidance related to the fix. However, you will not
have much luck in implanting the fix. Microsoft last week pulled Exchange 2010
SP1 RU3 due to a new issue that popped up with BlackBerry Enterprise Server
after installing RU3. The new issue no longer delays messages to BES it
duplicates them. Microsoft is hard at work trying to nail down the problem and
is asking for people to hold off installing RU3. If RU3 is installed and you are
experiencing this issue the update can be removed from the mailbox servers and
functionality should return to normal. For some customers this news is extremely
unfortunate due to the fix in RU3 that enabled UPD notifications for outlook
2003. As information is made available, I will post another update.
Monthly Archives: March 2011
Updated Scripts: Database and Transaction log Information
I figured I would update a few of my scripts to work in both environments. The
Database script can be seen below and downloaded HERE. The DB script has been updated to show better information on DB size and Lun information. I have created a new Transaction log script to work with Exchange 2007 and can be seen below or downloaded from HERE. The Exchange 2010 Script is
the Same and can be Downloaded HERE.
DBSize.ps1 Script
$report = @()
foreach ($DB in
$MYDatabases)
{
[string]$DBPathString = $db.EDBFILEpath
# Build Database File Path
$MyDriveString =$DBPathString.substring(0,1);
$MySubString=$DBPathString.substring(0,2);
$UNCPath = “\\$($db.Server)\”+ $MyDriveString + “$ ;
$Shell = new-object -com Shell.Application;
$UNCDBPath = $DBPathString.Replace($MySubString,$UNCPath);
$drives = Get-WmiObject -ComputerName $DB.Server Win32_LogicalDisk |
Where-Object {$_.DeviceID -eq $MyDriveString +”:”}
foreach($drive in
$drives)
{
$size1 = $drive.size / 1GB
$size = “{0:N2}” -f $size1
$size = $size + ” GB”
$free1 = $drive.freespace / 1GB
$free = “{0:N2}” -f $free1
$free = $free + ” GB”
}
#Get File Info
$DBFiles = get-childitem -path $UNCDBPath;
[decimal]$GBSize = ($DBFiles | Measure-Object -Property Length -Sum).Sum;
[decimal]$GBSize = $GBSize/1073741824;
$DBFILESIZE = “{0:N2}” -f $GBSize;
$DBFILESIZe = $DBFILESIZE + “GB”;
# Output info
$MyData = New-Object Object;
$MyData | Add-Member NoteProperty Name $DB.Name;
$MyData | Add-Member NoteProperty Server $DB.Server;
$MyData | Add-Member NoteProperty Size $DBFILESIZE;
$MyData | Add-Member NoteProperty “Lun Size” $size;
$MyData | Add-Member NoteProperty “Free Space” $free;
$report += $MyData
}
$report |FT -autosize
$report = @()
foreach ($DB in
$MYDatabases)
{
[string]$logPathString = $db.LogFolderPath
$MyDriveString
=$logPathString.substring(0,1);
$MySubString=$logPathString.substring(0,2);
$UNCPath = “\\$($db.Server)\” + $MyDriveString + “$ ;
$Logfoldername = $logPathString.Replace($MySubString,$UNCPath);
$Shell = new-object -com
Shell.Application
$Logfolder = $shell.namespace($Logfoldername)
$logfolderitems = $logfolder.items()
$logcount = $logfolderitems.count
$drives = Get-WmiObject -ComputerName $DB.Server Win32_LogicalDisk |
Where-Object {$_.DeviceID -eq $MyDriveString +”:”}
foreach($drive in
$drives)
{
$size1 = $drive.size / 1GB
$size = “{0:N2}” -f $size1
$size = $size + ” GB”
$free1 = $drive.freespace / 1GB
$free = “{0:N2}” -f $free1
$NewLogs1 = $free / .001
$free = $free + ” GB”
}
$MyData = New-Object Object;
$MyData | Add-Member NoteProperty DB -value
$DB.Name;
$MyData | Add-Member NoteProperty Server $DB.Server;
$MyData | Add-Member NoteProperty Logs $logcount;
$MyData | Add-Member NoteProperty “Lun Size” $size;
$MyData | Add-Member NoteProperty “Free Space” $free;
$MyData | Add-Member NoteProperty “Available Logs” $NewLogs1;
$report += $MyData
}
$report |FT -autosize
BlackBerry Delivery Delays and Exchange 2010
2010 Transaction Log Counter
I was on site working with a customer on sizing an archiving solution when I
happened to notice out of the corner of my eye that the Transaction log drive
was almost full. Now, we all know in a perfect world this would have been
caught by the server team’s disk free space monitoring tool. However, this
particular customer had not configured the tool to look at all servers in the
production farm. Luckily, we were able to catch it in time and the crisis was
averted. Moving forward here is a little script that outputs important
information. See Sample Below and download the script Here
![]()
$MYDatabases =
Get-MailboxDatabase
$report = @()
foreach ($DB in
$MYDatabases)
{
[string]$logPathString = $db.LogFolderPath
$MyDriveString
=$logPathString.substring(0,1);
$MySubString=$logPathString.substring(0,2);
$UNCPath
= “\\$($db.Server)\” + $MyDriveString + “$” ;
$Logfoldername =
$logPathString.Replace($MySubString,$UNCPath);
$Shell = new-object -com
Shell.Application
$Logfolder =
$shell.namespace($Logfoldername)
$logfolderitems =
$logfolder.items()
$logcount = $logfolderitems.count
$drives =
Get-WmiObject -ComputerName $DB.Server Win32_LogicalDisk | Where-Object
{$_.DeviceID -eq $MyDriveString +”:”}
foreach($drive in
$drives)
{
$size1 = $drive.size / 1GB
$size = “{0:N2}” -f
$size1
$size = $size + ” GB”
$free1 = $drive.freespace / 1GB
$free =
“{0:N2}” -f $free1
$NewLogs1 = $free / .001
$free = $free + ” GB”
}
$MyData = New-Object Object;
$MyData |
Add-Member NoteProperty DB -value $DB.Name;
$MyData | Add-Member NoteProperty
Server $DB.Server;
$MyData | Add-Member NoteProperty Logs
$logcount;
$MyData | Add-Member NoteProperty “Lun Size” $size;
$MyData |
Add-Member NoteProperty “Free Space” $free;
$MyData | Add-Member NoteProperty
“Available Logs” $NewLogs1;
$report += $MyData
}
$report |FT -autosize

