コード例 #1
0
        protected void PostExchange(ADObjectId alContainer)
        {
            IConfigurationSession configurationSession = base.CreateGlobalWritableConfigSession();
            bool skipRangedAttributes = configurationSession.SkipRangedAttributes;

            configurationSession.SkipRangedAttributes = true;
            try
            {
                ExchangeConfigurationContainerWithAddressLists exchangeConfigurationContainerWithAddressLists = configurationSession.GetExchangeConfigurationContainerWithAddressLists();
                if (exchangeConfigurationContainerWithAddressLists.LinkedAddressBookRootAttributesPresent())
                {
                    exchangeConfigurationContainerWithAddressLists.AddressBookRoots2.Add(alContainer);
                }
                base.WriteVerbose(TaskVerboseStringHelper.GetSaveObjectVerboseString(exchangeConfigurationContainerWithAddressLists, configurationSession, typeof(ExchangeConfigurationContainer)));
                configurationSession.Save(exchangeConfigurationContainerWithAddressLists);
                exchangeConfigurationContainerWithAddressLists.ResetChangeTracking();
                if (!AddressBookUtilities.IsTenantAddressList(configurationSession, alContainer))
                {
                    exchangeConfigurationContainerWithAddressLists.AddressBookRoots.Add(alContainer);
                    base.WriteVerbose(TaskVerboseStringHelper.GetSaveObjectVerboseString(exchangeConfigurationContainerWithAddressLists, configurationSession, typeof(ExchangeConfigurationContainer)));
                    configurationSession.Save(exchangeConfigurationContainerWithAddressLists);
                }
            }
            finally
            {
                configurationSession.SkipRangedAttributes = skipRangedAttributes;
                base.WriteVerbose(TaskVerboseStringHelper.GetSourceVerboseString(configurationSession));
            }
        }
コード例 #2
0
        protected override void InternalProcessRecord()
        {
            TaskLogger.LogEnter();
            Guid           guid           = base.DataObject.Guid;
            OrganizationId organizationId = base.DataObject.OrganizationId;

            base.InternalProcessRecord();
            if (!base.HasErrors)
            {
                try
                {
                    IConfigurationSession tenantOrTopologyConfigurationSession = DirectorySessionFactory.Default.GetTenantOrTopologyConfigurationSession(base.DomainController, false, ConsistencyMode.PartiallyConsistent, ADSessionSettings.FromRootOrgScopeSet(), 365, "InternalProcessRecord", "f:\\15.00.1497\\sources\\dev\\Management\\src\\Management\\SystemConfigurationTasks\\AddressBook\\RemoveAddressBook.cs");
                    ADObjectId            adobjectId = new ADObjectId("CN=Microsoft Exchange,CN=Services," + tenantOrTopologyConfigurationSession.ConfigurationNamingContext.DistinguishedName, Guid.Empty);
                    ExchangeConfigurationContainerWithAddressLists exchangeConfigurationContainerWithAddressLists = tenantOrTopologyConfigurationSession.Read <ExchangeConfigurationContainerWithAddressLists>(adobjectId);
                    if (exchangeConfigurationContainerWithAddressLists != null)
                    {
                        bool flag = false;
                        foreach (ADObjectId adobjectId2 in exchangeConfigurationContainerWithAddressLists.DefaultGlobalAddressList)
                        {
                            if (adobjectId2.ObjectGuid == guid)
                            {
                                exchangeConfigurationContainerWithAddressLists.DefaultGlobalAddressList.Remove(adobjectId2);
                                flag = true;
                                break;
                            }
                        }
                        if (exchangeConfigurationContainerWithAddressLists.LinkedAddressBookRootAttributesPresent())
                        {
                            foreach (ADObjectId adobjectId3 in exchangeConfigurationContainerWithAddressLists.DefaultGlobalAddressList2)
                            {
                                if (adobjectId3.ObjectGuid == guid)
                                {
                                    exchangeConfigurationContainerWithAddressLists.DefaultGlobalAddressList2.Remove(adobjectId3);
                                    flag = true;
                                    break;
                                }
                            }
                        }
                        if (flag)
                        {
                            tenantOrTopologyConfigurationSession.Save(exchangeConfigurationContainerWithAddressLists);
                        }
                    }
                    else
                    {
                        this.WriteWarning(Strings.ErrorExchangeConfigurationContainerNotFound(adobjectId.ToString()));
                    }
                }
                catch (DataSourceTransientException)
                {
                    this.WriteWarning(Strings.VerboseFailedRemoveGalDNInExchangeContainer(this.Identity.ToString()));
                }
            }
            TaskLogger.LogExit();
        }
コード例 #3
0
        internal static void SyncGlobalAddressLists(ExchangeConfigurationContainerWithAddressLists ecc, Task.TaskWarningLoggingDelegate writeWarning)
        {
            bool flag = false;
            IEnumerable <ADObjectId> enumerable = ecc.DefaultGlobalAddressList.Except(ecc.DefaultGlobalAddressList2);

            foreach (ADObjectId item in enumerable)
            {
                if (!flag)
                {
                    writeWarning(Strings.WarningFixedMissingGALEntry);
                    flag = true;
                }
                ecc.DefaultGlobalAddressList2.Add(item);
            }
        }
コード例 #4
0
        private void PostExchange(ADObjectId defaultGal)
        {
            IConfigurationSession configurationSession = base.CreateGlobalWritableConfigSession();
            bool skipRangedAttributes = configurationSession.SkipRangedAttributes;

            configurationSession.SkipRangedAttributes = true;
            try
            {
                ExchangeConfigurationContainerWithAddressLists exchangeConfigurationContainerWithAddressLists = configurationSession.GetExchangeConfigurationContainerWithAddressLists();
                if (exchangeConfigurationContainerWithAddressLists.LinkedAddressBookRootAttributesPresent())
                {
                    exchangeConfigurationContainerWithAddressLists.DefaultGlobalAddressList2.Add(defaultGal);
                }
                base.WriteVerbose(TaskVerboseStringHelper.GetSaveObjectVerboseString(exchangeConfigurationContainerWithAddressLists, configurationSession, typeof(ExchangeConfigurationContainer)));
                configurationSession.Save(exchangeConfigurationContainerWithAddressLists);
                exchangeConfigurationContainerWithAddressLists.ResetChangeTracking();
                if (!AddressBookUtilities.IsTenantAddressList(configurationSession, defaultGal))
                {
                    try
                    {
                        exchangeConfigurationContainerWithAddressLists.DefaultGlobalAddressList.Add(defaultGal);
                        base.WriteVerbose(TaskVerboseStringHelper.GetSaveObjectVerboseString(exchangeConfigurationContainerWithAddressLists, configurationSession, typeof(ExchangeConfigurationContainer)));
                        configurationSession.Save(exchangeConfigurationContainerWithAddressLists);
                    }
                    catch (AdminLimitExceededException innerException)
                    {
                        throw new ADOperationException(Strings.ErrorTooManyGALsCreated, innerException);
                    }
                }
            }
            finally
            {
                configurationSession.SkipRangedAttributes = skipRangedAttributes;
                base.WriteVerbose(TaskVerboseStringHelper.GetSourceVerboseString(configurationSession));
            }
        }
コード例 #5
0
 private void PostNewAddressBookBase()
 {
     TaskLogger.LogEnter(new object[]
     {
         this.DataObject
     });
     if (VariantConfiguration.GetSnapshot(MachineSettingsContext.Local, null, null).CmdletInfra.GlobalAddressListAttrbutes.Enabled)
     {
         bool flag = true;
         IConfigurationSession tenantOrTopologyConfigurationSession = DirectorySessionFactory.Default.GetTenantOrTopologyConfigurationSession(base.DomainController, false, ConsistencyMode.PartiallyConsistent, ADSessionSettings.FromRootOrgScopeSet(), 625, "PostNewAddressBookBase", "f:\\15.00.1497\\sources\\dev\\Management\\src\\Management\\SystemConfigurationTasks\\AddressBook\\NewAddressBook.cs");
         bool skipRangedAttributes = tenantOrTopologyConfigurationSession.SkipRangedAttributes;
         tenantOrTopologyConfigurationSession.SkipRangedAttributes = false;
         try
         {
             ExchangeConfigurationContainerWithAddressLists exchangeConfigurationContainerWithAddressLists = tenantOrTopologyConfigurationSession.GetExchangeConfigurationContainerWithAddressLists();
             try
             {
                 if (exchangeConfigurationContainerWithAddressLists.LinkedAddressBookRootAttributesPresent())
                 {
                     AddressBookUtilities.SyncGlobalAddressLists(exchangeConfigurationContainerWithAddressLists, new Task.TaskWarningLoggingDelegate(this.WriteWarning));
                     exchangeConfigurationContainerWithAddressLists.DefaultGlobalAddressList2.Add(this.DataObject.Id);
                 }
                 tenantOrTopologyConfigurationSession.Save(exchangeConfigurationContainerWithAddressLists);
                 exchangeConfigurationContainerWithAddressLists.ResetChangeTracking();
                 flag = false;
                 if (!AddressBookUtilities.IsTenantAddressList(tenantOrTopologyConfigurationSession, this.DataObject.Id))
                 {
                     try
                     {
                         exchangeConfigurationContainerWithAddressLists.DefaultGlobalAddressList.Add(this.DataObject.Id);
                         tenantOrTopologyConfigurationSession.Save(exchangeConfigurationContainerWithAddressLists);
                     }
                     catch (AdminLimitExceededException innerException)
                     {
                         if (!exchangeConfigurationContainerWithAddressLists.LinkedAddressBookRootAttributesPresent())
                         {
                             throw new ADOperationException(Strings.ErrorTooManyGALsCreated, innerException);
                         }
                         this.WriteWarning(Strings.WarningTooManyLegacyGALsCreated);
                     }
                 }
             }
             catch (DataSourceTransientException exception)
             {
                 base.WriteError(exception, ErrorCategory.WriteError, this.DataObject.Id);
             }
         }
         finally
         {
             tenantOrTopologyConfigurationSession.SkipRangedAttributes = skipRangedAttributes;
             if (flag)
             {
                 try
                 {
                     base.DataSession.Delete(this.DataObject);
                 }
                 catch (DataSourceTransientException ex)
                 {
                     TaskLogger.Trace("Exception is raised in rollback action (deleting the new Global Address List object): {0}", new object[]
                     {
                         ex.ToString()
                     });
                 }
             }
         }
     }
     TaskLogger.LogExit();
 }