Example #1
0
        /// <summary>
        /// Gets a list of message tracking logs between a time period for sent messages
        /// </summary>
        /// <param name="start"></param>
        /// <param name="end"></param>
        /// <returns></returns>
        public List <Models.MessageTrackingLog> Get_TotalSentMessages(DateTime start, DateTime end)
        {
            List <Models.MessageTrackingLog> totalSentMessages = new List <Models.MessageTrackingLog>();

            PSCommand cmd = new PSCommand();

            if (Config.ServiceSettings.ExchangeVersion >= 2013)
            {
                cmd.AddCommand("Get-TransportService");
            }
            else
            {
                cmd.AddCommand("Get-TransportServer");
            }

            cmd.AddCommand("Get-MessageTrackingLog");
            cmd.AddParameter("EventId", "RECEIVE");
            cmd.AddParameter("Start", start.ToString("MM/dd/yyyy HH:mm", CultureInfo.InvariantCulture));
            cmd.AddParameter("End", end.ToString("MM/dd/yyyy HH:mm", CultureInfo.InvariantCulture));
            cmd.AddParameter("ResultSize", "Unlimited");
            cmd.AddParameter("DomainController", Config.ServiceSettings.PrimaryDC);
            _powershell.Commands = cmd;

            Collection <PSObject> psObjects = _powershell.Invoke();

            if (_powershell.HadErrors)
            {
                throw _powershell.Streams.Error[0].Exception;
            }
            else
            {
                foreach (PSObject ps in psObjects)
                {
                    Models.MessageTrackingLog newLog = new Models.MessageTrackingLog();
                    newLog.Timestamp      = DateTime.Parse(ps.Members["Timestamp"].Value.ToString());
                    newLog.ServerHostname = ps.Members["ServerHostname"].Value.ToString();
                    newLog.Source         = ps.Members["Source"].Value.ToString();
                    newLog.EventId        = ps.Members["EventId"].Value.ToString();
                    newLog.TotalBytes     = long.Parse(ps.Members["TotalBytes"].Value.ToString());

                    newLog.Users = new List <string>();
                    newLog.Users.Add(ps.Members["Sender"].Value.ToString());

                    if (newLog.Source.Equals("STOREDRIVER"))
                    {
                        totalSentMessages.Add(newLog);
                    }
                }
            }

            return(totalSentMessages);
        }
Example #2
0
        /// <summary>
        /// Gets a list of message tracking logs between a time period for received messages
        /// </summary>
        /// <param name="start"></param>
        /// <param name="end"></param>
        /// <returns></returns>
        public List <Models.MessageTrackingLog> Get_TotalReceivedMessages(DateTime start, DateTime end)
        {
            List <Models.MessageTrackingLog> totalReceivedMessages = new List <Models.MessageTrackingLog>();

            PSCommand cmd = new PSCommand();

            if (Config.ServiceSettings.ExchangeVersion >= 2013)
            {
                cmd.AddCommand("Get-TransportService");
            }
            else
            {
                cmd.AddCommand("Get-TransportServer");
            }
            cmd.AddCommand("Get-MessageTrackingLog");
            cmd.AddParameter("EventId", "DELIVER");
            cmd.AddParameter("Start", start.ToString("MM/dd/yyyy HH:mm", CultureInfo.InvariantCulture));
            cmd.AddParameter("End", end.ToString("MM/dd/yyyy HH:mm", CultureInfo.InvariantCulture));
            cmd.AddParameter("ResultSize", "Unlimited");
            cmd.AddParameter("DomainController", Config.ServiceSettings.PrimaryDC);
            _powershell.Commands = cmd;

            Collection <PSObject> psObjects = _powershell.Invoke();

            if (_powershell.HadErrors)
            {
                throw _powershell.Streams.Error[0].Exception;
            }
            else
            {
                foreach (PSObject ps in psObjects)
                {
                    Models.MessageTrackingLog newLog = new Models.MessageTrackingLog();
                    newLog.Timestamp      = DateTime.Parse(ps.Members["Timestamp"].Value.ToString());
                    newLog.ServerHostname = ps.Members["ServerHostname"].Value.ToString();
                    newLog.Source         = ps.Members["Source"].Value.ToString();
                    newLog.EventId        = ps.Members["EventId"].Value.ToString();
                    newLog.TotalBytes     = long.Parse(ps.Members["TotalBytes"].Value.ToString());

                    var multiValue = ps.Members["Recipients"].Value as PSObject;
                    var users      = multiValue.BaseObject as ArrayList;
                    var array      = users.ToArray(typeof(string)) as string[];
                    newLog.Users = array.ToList();

                    totalReceivedMessages.Add(newLog);
                }
            }

            return(totalReceivedMessages);
        }
        /// <summary>
        /// Gets a list of message tracking logs between a time period for received messages
        /// </summary>
        /// <param name="start"></param>
        /// <param name="end"></param>
        /// <returns></returns>
        public List<Models.MessageTrackingLog> Get_TotalReceivedMessages(DateTime start, DateTime end)
        {
            List<Models.MessageTrackingLog> totalReceivedMessages = new List<Models.MessageTrackingLog>();

            PSCommand cmd = new PSCommand();
            if (Config.ServiceSettings.ExchangeVersion >= 2013)
                cmd.AddCommand("Get-TransportService");
            else
                cmd.AddCommand("Get-TransportServer");
            cmd.AddCommand("Get-MessageTrackingLog");
            cmd.AddParameter("EventId", "DELIVER");
            cmd.AddParameter("Start", start.ToString("MM/dd/yyyy HH:mm", CultureInfo.InvariantCulture));
            cmd.AddParameter("End", end.ToString("MM/dd/yyyy HH:mm", CultureInfo.InvariantCulture));
            cmd.AddParameter("ResultSize", "Unlimited");
            cmd.AddParameter("DomainController", Config.ServiceSettings.PrimaryDC);
            _powershell.Commands = cmd;

            Collection<PSObject> psObjects = _powershell.Invoke();
            if (_powershell.HadErrors)
                throw _powershell.Streams.Error[0].Exception;
            else
            {
                foreach (PSObject ps in psObjects)
                {
                    Models.MessageTrackingLog newLog = new Models.MessageTrackingLog();
                    newLog.Timestamp = DateTime.Parse(ps.Members["Timestamp"].Value.ToString());
                    newLog.ServerHostname = ps.Members["ServerHostname"].Value.ToString();
                    newLog.Source = ps.Members["Source"].Value.ToString();
                    newLog.EventId = ps.Members["EventId"].Value.ToString();
                    newLog.TotalBytes = long.Parse(ps.Members["TotalBytes"].Value.ToString());

                    var multiValue = ps.Members["Recipients"].Value as PSObject;
                    var users = multiValue.BaseObject as ArrayList;
                    var array = users.ToArray(typeof(string)) as string[];
                    newLog.Users = array.ToList();

                    totalReceivedMessages.Add(newLog);
                }
            }

            return totalReceivedMessages;
        }
        /// <summary>
        /// Gets a list of message tracking logs between a time period for sent messages
        /// </summary>
        /// <param name="start"></param>
        /// <param name="end"></param>
        /// <returns></returns>
        public List<Models.MessageTrackingLog> Get_TotalSentMessages(DateTime start, DateTime end)
        {
            List<Models.MessageTrackingLog> totalSentMessages = new List<Models.MessageTrackingLog>();

            PSCommand cmd = new PSCommand();
            if (Config.ServiceSettings.ExchangeVersion >= 2013)
                cmd.AddCommand("Get-TransportService");
            else
                cmd.AddCommand("Get-TransportServer");

            cmd.AddCommand("Get-MessageTrackingLog");
            cmd.AddParameter("EventId", "RECEIVE");
            cmd.AddParameter("Start", start.ToString("MM/dd/yyyy HH:mm", CultureInfo.InvariantCulture));
            cmd.AddParameter("End", end.ToString("MM/dd/yyyy HH:mm", CultureInfo.InvariantCulture));
            cmd.AddParameter("ResultSize", "Unlimited");
            cmd.AddParameter("DomainController", Config.ServiceSettings.PrimaryDC);
            _powershell.Commands = cmd;

            Collection<PSObject> psObjects = _powershell.Invoke();
            if (_powershell.HadErrors)
                throw _powershell.Streams.Error[0].Exception;
            else
            {
                foreach (PSObject ps in psObjects)
                {
                    Models.MessageTrackingLog newLog = new Models.MessageTrackingLog();
                    newLog.Timestamp = DateTime.Parse(ps.Members["Timestamp"].Value.ToString());
                    newLog.ServerHostname = ps.Members["ServerHostname"].Value.ToString();
                    newLog.Source = ps.Members["Source"].Value.ToString();
                    newLog.EventId = ps.Members["EventId"].Value.ToString();
                    newLog.TotalBytes = long.Parse(ps.Members["TotalBytes"].Value.ToString());

                    newLog.Users = new List<string>();
                    newLog.Users.Add(ps.Members["Sender"].Value.ToString());

                    if (newLog.Source.Equals("STOREDRIVER"))
                        totalSentMessages.Add(newLog);
                }
            }
            
            return totalSentMessages;
        }