コード例 #1
0
        // Token: 0x060011B3 RID: 4531 RVA: 0x000679D8 File Offset: 0x00065BD8
        protected List <MailboxData> GetMailboxesToProcess(MailboxTableFlags mailboxTableFlags)
        {
            List <MailboxData> list = new List <MailboxData>(10);

            PropValue[][] rows = null;
            try
            {
                TimeBasedAssistant.TrackAdminRpcCalls(base.DatabaseInfo, "Client=Maintenance", delegate(ExRpcAdmin rpcAdmin)
                {
                    rows = rpcAdmin.GetMailboxTableInfo(this.DatabaseInfo.Guid, Guid.Empty, mailboxTableFlags, StoreMaintenanceAssistant.columnsToRequest);
                });
            }
            catch (MapiRetryableException innerException)
            {
                throw new SkipException(innerException);
            }
            catch (MapiPermanentException innerException2)
            {
                throw new SkipException(innerException2);
            }
            if (rows != null)
            {
                foreach (PropValue[] array in rows)
                {
                    list.Add(new StoreMaintenanceAssistant.MaintenanceMailboxData(array[0].GetGuid(), base.DatabaseInfo.Guid, array[1].GetInt(), array[2].GetGuid()));
                }
            }
            return(list);
        }
コード例 #2
0
 protected override void InternalProcessRecord()
 {
     TaskLogger.LogEnter();
     foreach (Database database in this.databases)
     {
         try
         {
             Guid mailboxGuid = Guid.Empty;
             MailboxTableFlags mailboxTableFlags = MailboxTableFlags.MailboxTableFlagsNone;
             if (null != this.identity)
             {
                 mailboxGuid = this.identity.MailboxGuid;
             }
             if (this.isRunningMailboxStatisticsTask)
             {
                 mailboxTableFlags |= MailboxTableFlags.IncludeSoftDeletedMailbox;
             }
             QueryFilter filter = new MailboxContextFilter(mailboxGuid, (ulong)((long)mailboxTableFlags), this.NoADLookupForMailboxStatistics);
             IEnumerable <TPresentationObject> enumerable = this.mapiSession.FindPaged <TDataObject, TPresentationObject>(filter, MapiTaskHelper.ConvertDatabaseADObjectToDatabaseId(database), QueryScope.SubTree, null, 0, 0);
             foreach (TPresentationObject tpresentationObject in enumerable)
             {
                 try
                 {
                     MailboxId mailboxId = tpresentationObject.Identity as MailboxId;
                     if (this.Identity == null || (null != mailboxId && ((Guid.Empty != this.identity.MailboxGuid && this.identity.MailboxGuid == mailboxId.MailboxGuid) || (!string.IsNullOrEmpty(this.identity.MailboxExchangeLegacyDn) && string.Equals(this.identity.MailboxExchangeLegacyDn, mailboxId.MailboxExchangeLegacyDn, StringComparison.OrdinalIgnoreCase)))))
                     {
                         if (this.isRunningLogonStatisticsTask)
                         {
                             ((LogonStatistics)((object)tpresentationObject)).ServerName   = database.ServerName;
                             ((LogonStatistics)((object)tpresentationObject)).DatabaseName = database.Name;
                         }
                         else if (this.isRunningResourceMonitorDigestTask)
                         {
                             ((MailboxResourceMonitor)((object)tpresentationObject)).ServerName           = this.server.Name;
                             ((MailboxResourceMonitor)((object)tpresentationObject)).DatabaseName         = database.Name;
                             ((MailboxResourceMonitor)((object)tpresentationObject)).IsDatabaseCopyActive = (database.Server.ObjectGuid == this.server.Guid);
                         }
                         else if (this.isRunningMailboxStatisticsTask)
                         {
                             Microsoft.Exchange.Management.MapiTasks.Presentation.MailboxStatistics mailboxStatistics = (Microsoft.Exchange.Management.MapiTasks.Presentation.MailboxStatistics)((object)tpresentationObject);
                             mailboxStatistics.ServerName           = this.server.Name;
                             mailboxStatistics.DatabaseName         = database.Name;
                             mailboxStatistics.Database             = database.Identity;
                             mailboxStatistics.IsDatabaseCopyActive = (database.Server.ObjectGuid == this.server.Guid);
                             MailboxDatabase mailboxDatabase = database as MailboxDatabase;
                             if (mailboxDatabase != null)
                             {
                                 mailboxStatistics.DatabaseIssueWarningQuota        = mailboxDatabase.IssueWarningQuota;
                                 mailboxStatistics.DatabaseProhibitSendQuota        = mailboxDatabase.ProhibitSendQuota;
                                 mailboxStatistics.DatabaseProhibitSendReceiveQuota = mailboxDatabase.ProhibitSendReceiveQuota;
                             }
                             if (mailboxId != null && this.GetMoveHistoryOption() != MoveHistoryOption.None)
                             {
                                 UserMailboxFlags userMailboxFlags = UserMailboxFlags.None;
                                 if (database.Recovery)
                                 {
                                     userMailboxFlags |= UserMailboxFlags.RecoveryMDB;
                                 }
                                 if (mailboxStatistics.IsMoveDestination ?? false)
                                 {
                                     userMailboxFlags |= UserMailboxFlags.MoveDestination;
                                 }
                                 else if (mailboxStatistics.DisconnectReason != null)
                                 {
                                     if (mailboxStatistics.DisconnectReason.Value == MailboxState.SoftDeleted)
                                     {
                                         userMailboxFlags |= UserMailboxFlags.SoftDeleted;
                                     }
                                     else
                                     {
                                         userMailboxFlags |= UserMailboxFlags.Disconnected;
                                     }
                                 }
                                 try
                                 {
                                     mailboxStatistics.MoveHistory = MoveHistoryEntry.LoadMoveHistory(mailboxId.MailboxGuid, database.Id.ObjectGuid, this.GetMoveHistoryOption() == MoveHistoryOption.IncludeMoveHistoryAndReport, userMailboxFlags);
                                 }
                                 catch (LocalizedException exception)
                                 {
                                     base.WriteError(exception, ErrorCategory.ResourceUnavailable, mailboxId);
                                 }
                             }
                         }
                         bool flag = true;
                         if (this.isRunningMailboxStatisticsTask)
                         {
                             Exception ex = null;
                             try
                             {
                                 QueryFilter internalFilter = this.InternalFilter;
                                 if (internalFilter != null && !OpathFilterEvaluator.FilterMatches(internalFilter, (Microsoft.Exchange.Data.Mapi.MailboxStatistics)((object)tpresentationObject)))
                                 {
                                     flag = false;
                                 }
                             }
                             catch (InvalidCastException ex2)
                             {
                                 ex = ex2;
                             }
                             catch (ParsingException ex3)
                             {
                                 ex = ex3;
                             }
                             catch (ArgumentOutOfRangeException ex4)
                             {
                                 ex = ex4;
                             }
                             if (ex != null)
                             {
                                 base.WriteError(new MdbAdminTaskException(Strings.ErrorInvalidMailboxStatisticsFilter(this.InternalFilter.ToString())), ErrorCategory.InvalidArgument, this.InternalFilter);
                             }
                         }
                         if (flag)
                         {
                             this.WriteResult(tpresentationObject);
                         }
                         if (this.Identity != null && this.isRunningMailboxStatisticsTask)
                         {
                             TaskLogger.LogExit();
                             return;
                         }
                     }
                 }
                 finally
                 {
                     if (tpresentationObject != null)
                     {
                         tpresentationObject.Dispose();
                     }
                 }
             }
         }
         catch (DatabaseUnavailableException ex5)
         {
             if (this.Identity == null && this.Database == null)
             {
                 base.WriteWarning(ex5.Message);
             }
             else
             {
                 base.WriteError(ex5, ErrorCategory.ResourceUnavailable, database);
             }
         }
         catch (MapiObjectNotFoundException exception2)
         {
             if (this.Identity == null || !this.isRunningMailboxStatisticsTask)
             {
                 base.WriteError(exception2, ErrorCategory.ObjectNotFound, this.Identity);
             }
         }
     }
     if (this.Identity != null && this.isRunningMailboxStatisticsTask)
     {
         TIdentity tidentity = this.Identity;
         this.WriteWarning(Strings.WarningMailboxNeverBeenLoggedOn(tidentity.ToString(), this.identity.ToString()));
     }
     TaskLogger.LogExit();
 }