コード例 #1
0
 protected override void InternalBeginProcessing()
 {
     base.InternalBeginProcessing();
     this.LoadSupportedToolsData();
     this.tenantVersionRequired = this.toolsData.RequiresTenantVersion();
     if (this.tenantVersionRequired)
     {
         this.rootOrgContainerId    = ADSystemConfigurationSession.GetRootOrgContainerIdForLocalForest();
         base.CurrentOrganizationId = OrganizationTaskHelper.ResolveOrganization(this, this.Organization, this.rootOrgContainerId, Strings.ErrorOrganizationParameterRequired);
     }
 }
コード例 #2
0
        protected override void InternalProcessRecord()
        {
            base.InternalProcessRecord();
            RoleDefinition[]          array;
            RoleNameMappingCollection roleNameMappingCollection;

            string[] array2;
            InstallCannedRbacRoles.CalculateRoleConfigurationForCurrentSKU(this.Organization, out array, out roleNameMappingCollection, out array2, out this.allAllowedRoleEntriesForSKU);
            List <ExchangeRole> list  = new List <ExchangeRole>();
            List <ExchangeRole> list2 = new List <ExchangeRole>();
            bool flag = false;

            if (this.Organization != null)
            {
                ExchangeConfigurationUnit exchangeConfigUnitFromOrganizationId = OrganizationTaskHelper.GetExchangeConfigUnitFromOrganizationId(this.Organization, this.configurationSession, new Task.TaskErrorLoggingDelegate(base.WriteError), true);
                flag = !ServicePlanConfiguration.GetInstance().GetServicePlanSettings(exchangeConfigUnitFromOrganizationId.ProgramId, exchangeConfigUnitFromOrganizationId.OfferId).Organization.PerMBXPlanRoleAssignmentPolicyEnabled;
            }
            ADPagedReader <ExchangeRole> adpagedReader = this.configurationSession.FindAllPaged <ExchangeRole>();

            foreach (ExchangeRole exchangeRole in adpagedReader)
            {
                base.LogReadObject(exchangeRole);
                if (!exchangeRole.IsDeprecated)
                {
                    if (exchangeRole.HasDownlevelData)
                    {
                        exchangeRole[ExchangeRoleSchema.InternalDownlevelRoleEntries] = null;
                    }
                    this.RemoveObsoleteEntriesAndParameters(exchangeRole);
                    if (exchangeRole.RoleEntries.Count == 0)
                    {
                        base.WriteVerbose(Strings.VerboseDeprecatingRoleBecauseNoEntriesLeft(exchangeRole.Id.ToString()));
                        exchangeRole.RoleState = RoleState.Deprecated;
                    }
                    this.configurationSession.Save(exchangeRole);
                    base.LogWriteObject(exchangeRole);
                }
                if (flag && exchangeRole.IsEndUserRole)
                {
                    exchangeRole.MailboxPlanIndex = string.Empty;
                    this.configurationSession.Save(exchangeRole);
                    base.WriteVerbose(TaskVerboseStringHelper.GetSaveObjectVerboseString(exchangeRole, this.configurationSession, typeof(ExchangeRole)));
                    base.LogWriteObject(exchangeRole);
                }
                if (exchangeRole.IsDeprecated)
                {
                    this.DeleteRoleAssigments(exchangeRole);
                    if (exchangeRole.IsRootRole)
                    {
                        list.Add(exchangeRole);
                    }
                    else
                    {
                        list2.Add(exchangeRole);
                    }
                }
            }
            foreach (ExchangeRole exchangeRole2 in list)
            {
                this.configurationSession.DeleteTree(exchangeRole2, delegate(ADTreeDeleteNotFinishedException de)
                {
                    if (de != null)
                    {
                        base.WriteVerbose(de.LocalizedString);
                    }
                });
                base.WriteVerbose(Strings.ProgressActivityRemovingManagementRoleTree(exchangeRole2.Id.ToString()));
            }
            foreach (ExchangeRole exchangeRole3 in list2)
            {
                ExchangeRole exchangeRole4 = this.configurationSession.Read <ExchangeRole>(exchangeRole3.Id);
                if (exchangeRole4 != null)
                {
                    base.LogReadObject(exchangeRole4);
                    this.configurationSession.DeleteTree(exchangeRole4, delegate(ADTreeDeleteNotFinishedException de)
                    {
                        if (de != null)
                        {
                            base.WriteVerbose(de.LocalizedString);
                        }
                    });
                    base.WriteVerbose(Strings.ConfirmationMessageRemoveManagementRole(exchangeRole4.Id.ToString()));
                }
            }
        }