Script Center > Gallery > Messaging & Communication > Defragment the Exchange Information Store
TechNet Script Center logo

Welcome to the TechNet Script Center Gallery!

Each contribution is licensed to you under a License Agreement by its owner, not Microsoft. Microsoft does not guarantee the contribution or purport to grant rights to it.

Defragment the Exchange Information Store

(Community)
Rate it:
 
 
 
 
 
Script Code
VBScript
@Echo off
:: ExMaint Version 1.2 
:: Matthew Jones - 
:: Script must include Exchagne Server name as part of parameter {ie: Scriptname.cmd Servername}
::
:: Purpose: Take Exchange Information Store off-line - Backup EDB and STM file.  Perform Defrag.  Reboot Server
::
:: Why: So I can get some sleep while the Exchange Store does a poor mans defrag.
::
:: Assumpsion 1: The Exchange program is installed to c:\program files\exchsrvr {for eseutil access} 
:: Assumption 2: You have enough space in the backup path to accomodate the store backup.
:: Assumption 3: You have the shutdown utility in a common path {i.e: winnt\system32}.
CLS

:: What directory do you want the report to generate in?
set ReportPath=c:\scripts\reports\
if not exist %reportpath% mkdir c:\scripts\reports

set ReportName=%reportpath%%1.txt

:: location to back up EDB and STM files
set backuppath=d:\exchbup\

:: Create backup path if it does not exist
if not exist %backuppath% mkdir %backuppath%

:: location where Exchange Store DB resides
set datalocation=d:\InfoStore\

:: Exchange Store Name
set dataname=priv1.edb

:: location where Exchange Store STM resides
set streamlocation=d:\InfoStore\

:: Exchange STM filename
set streamname=priv1.stm

date /t  > %ReportName%
time /t >> %ReportName%

echo Server Name is : %1 >> %ReportName%
echo Report Path    : %reportpath% >> %ReportName%
echo Report Name    : %reportname% >> %ReportName%
echo                  ---------------- >> %ReportName%
echo Backup Path    : %backuppath% >> %ReportName%
echo Data Location  : %datalocation% >> %ReportName%
echo Data Name      : %dataname% >> %ReportName%
echo Stream Location: %streamlocation% >> %ReportName%
echo Stream Name    : %streamname% >> %ReportName%

echo Server Name is : %1
echo Report Path    : %reportpath%
echo Report Name    : %reportname%
echo                  ----------------
echo Backup Path    : %backuppath%
echo Data Location  : %datalocation%
echo Data Name      : %dataname%
echo Stream Location: %streamlocation%
echo Stream Name    : %streamname%


if %1 == "" goto :errorfound

set ExchServer=%1
echo The Server Name is: %ExchServer%

:StartJob
Echo Stopping the Exchange Store on %ExchServer% 
Echo Stopping the Exchange Store on %ExchServer% >> %ReportName%

net stop "Microsoft Exchange Information Store" >> %ReportName%
Echo Exchange Store Stopped 
Echo Exchange Store Stopped >> %ReportName%
date /t  > %ReportName%
time /t >> %ReportName%

Echo Delete Old Copy - Backup Production Info Store
if exist %BackupPath%%dataname% del %BackupPath%%dataname%
if exist %BackupPath%%streamname% del %BackupPath%%streamname%
Echo Delete Old Copy - Backup Production Info Store >> %ReportName%

Echo Copy STM File to %backuppath%.
Copy %streamlocation%%streamname% %backuppath%
Echo Copy of STM File Completed. >> %ReportName%
Echo Copy of STM File Completed. 

Echo Copy %dataname% to %backuppath%. >> %ReportName%
Echo Copy %dataname% to %backuppath%. 
Copy %datalocation%%dataname% %backuppath%
Echo Copy of STM File Completed. >> %ReportName%
Echo Copy of STM File Completed. 

if errorlevel = 0 goto :STARTESEUTIL

:failcopy
Echo The Copy process failed - Process aborted! 
Echo The Copy process failed - Process aborted! >> %ReportName%
goto :ENDMAINT
 
:STARTESEUTIL
Echo Starting ESEUTIL
Echo Starting ESEUTIL>> %ReportName%
date /t >> %ReportName%
time /t >> %ReportName%

"c:\program files\exchsrvr\bin\eseutil.exe" /d %datalocation%%dataname%
Echo ESEUTIL Defragmentation Completed >> %ReportName%
Echo ESEUTIL Defragmentation Completed 
date /t >> %ReportName%
time /t >> %ReportName%




:StartServices

Echo Starting Microsoft Exchange Information Store
Echo Starting Microsoft Exchange Information Store >> %ReportName%
net start "Microsoft Exchange Information Store" >> %ReportName%
date /t >> %ReportName%
time /t >> %ReportName%

echo Rebooting Server >> %ReportName%
echo Rebooting Server
shutdown /l /r /t:20
goto :ENDMAINT


:errorfound
Echo You did not set a Server name as a parameter of the script.
Echo Please use the Exchange Servername as a parameter in the script.

:ENDMAINT
Echo Script Ended >> %ReportName%
date /t >> %ReportName%
time /t >> %ReportName%
:: notepad %ReportName%


Platforms
Windows Server 2008 R2 No
Windows Server 2008 No
Windows Server 2003 No
Windows 7 No
Windows Vista No
Windows XP No
Windows 2000 No
For online peer support, join The Official Scripting Guys Forum! To provide feedback or report bugs in sample scripts, please start a new discussion on the Discussions tab for this script.
Disclaimer The sample scripts are not supported under any Microsoft standard support program or service. The sample scripts are provided AS IS without warranty of any kind. Microsoft further disclaims all implied warranties including, without limitation, any implied warranties of merchantability or of fitness for a particular purpose. The entire risk arising out of the use or performance of the sample scripts and documentation remains with you. In no event shall Microsoft, its authors, or anyone else involved in the creation, production, or delivery of the scripts be liable for any damages whatsoever (including, without limitation, damages for loss of business profits, business interruption, loss of business information, or other pecuniary loss) arising out of the use of or inability to use the sample scripts or documentation, even if Microsoft has been advised of the possibility of such damages.
Be the first to create a discussion.