using System; using System.Collections; using System.Linq; using System.Text; using ADODB; using CDOEXM; using System.Net.Mail; namespace StoreReport { class Program { static void Main(string[] args) { CDOEXM.IExchangeServer iExs; CDOEXM.IStorageGroup iSg; CDOEXM.MailboxStoreDB iMdb; CDOEXM.PublicStoreDB iPf; iExs = new CDOEXM.ExchangeServerClass(); iSg = new CDOEXM.StorageGroupClass(); iMdb = new CDOEXM.MailboxStoreDBClass(); iPf = new CDOEXM.PublicStoreDBClass(); string[] snServers = { "server1", "server2", "server3" }; StringBuilder sb = new StringBuilder(); foreach (string snServername in snServers) { try { iExs.DataSource.Open(snServername, null, ADODB.ConnectModeEnum.adModeReadWrite, ADODB.RecordCreateOptionsEnum.adOpenIfExists, ADODB.RecordOpenOptionsEnum.adOpenSource, null, null); foreach (string Sgname in (IEnumerable)iExs.StorageGroups) { try { iSg.DataSource.Open(Sgname, null, ADODB.ConnectModeEnum.adModeReadWrite, ADODB.RecordCreateOptionsEnum.adOpenIfExists, ADODB.RecordOpenOptionsEnum.adOpenSource, null, null); foreach (string Mbname in (IEnumerable)iSg.MailboxStoreDBs) { try { iMdb.DataSource.Open(Mbname, null, ADODB.ConnectModeEnum.adModeReadWrite, ADODB.RecordCreateOptionsEnum.adOpenIfExists, ADODB.RecordOpenOptionsEnum.adOpenSource, null, null); if (iMdb.Status == CDOEXMStoreDBStatus.cdoexmOnline) continue; Console.WriteLine("Server: " + iExs.Name + " Group: " + iSg.Name + " DB: " + iMdb.Name + " Status: " + iMdb.Status); sb.Append("Server: " + iExs.Name + " Group: " + iSg.Name + " DB: " + iMdb.Name + " Status: " + iMdb.Status + "\r\n"); } catch (Exception e) { Console.WriteLine(" ** Error: " + e.Message); sb.Append(" ** Error: " + e.Message + "\r\n"); } } } catch (Exception e) { if (!e.Message.Contains("c1032221")) { Console.WriteLine(" ** Error: " + e.Message); sb.Append(" ** Error: " + e.Message + "\r\n"); } } } } catch (Exception e) { Console.WriteLine(" ** Error: " + e.Message); sb.Append(" ** Error: " + e.Message + "\r\n"); } } Console.WriteLine("Finished"); Console.WriteLine(sb.ToString()); if (sb.Length > 0) { SendMailMessage("someone@somewhere.com", sb.ToString(), "Exchange Monitor"); } } private static void SendMailMessage(string recip, string message, string subject) { MailMessage objMsg = new MailMessage("exchangemon@somewhere.com", recip, subject, message); SmtpClient client = new SmtpClient("smtp.somewhere.com"); client.Send(objMsg); } } }