Esempio n. 1
0
        protected override ADServerSettings GetCmdletADServerSettings()
        {
            this.fields = base.CurrentTaskContext.InvocationInfo.Fields;
            SwitchParameter switchParameter = this.fields.Contains("IsDatacenter") ? ((SwitchParameter)this.fields["IsDatacenter"]) : new SwitchParameter(false);

            if (!this.fields.Contains(ManageOrganizationTaskBase.ParameterCreateSharedConfig))
            {
                new SwitchParameter(false);
            }
            else
            {
                SwitchParameter switchParameter2 = (SwitchParameter)this.fields[ManageOrganizationTaskBase.ParameterCreateSharedConfig];
            }
            string text  = (string)this.fields["TenantProgramId"];
            string text2 = (string)this.fields["TenantOfferId"];
            AccountPartitionIdParameter accountPartitionIdParameter = (AccountPartitionIdParameter)this.fields["AccountPartition"];
            string value = null;

            if (TopologyProvider.CurrentTopologyMode == TopologyMode.ADTopologyService && switchParameter)
            {
                ADServerSettings serverSettings = ExchangePropertyContainer.GetServerSettings(base.CurrentTaskContext.SessionState);
                if (serverSettings != null && accountPartitionIdParameter != null)
                {
                    PartitionId partitionId = RecipientTaskHelper.ResolvePartitionId(accountPartitionIdParameter, null);
                    if (partitionId != null)
                    {
                        value = serverSettings.PreferredGlobalCatalog(partitionId.ForestFQDN);
                    }
                }
                if (string.IsNullOrEmpty(value) && this.Name != null)
                {
                    if (this.domainBasedADServerSettings == null)
                    {
                        PartitionId partitionId2 = (accountPartitionIdParameter == null) ? PartitionId.LocalForest : RecipientTaskHelper.ResolvePartitionId(accountPartitionIdParameter, null);
                        this.domainBasedADServerSettings = RunspaceServerSettings.CreateGcOnlyRunspaceServerSettings(this.Name.ToLowerInvariant(), partitionId2.ForestFQDN, false);
                    }
                    return(this.domainBasedADServerSettings);
                }
            }
            return(base.GetCmdletADServerSettings());
        }
        private static PartitionId ResolvePartitionId(AccountPartitionIdParameter accountPartitionIdParameter, Task.TaskErrorLoggingDelegate errorLogger)
        {
            PartitionId     result = null;
            LocalizedString?localizedString;
            IEnumerable <AccountPartition> objects = accountPartitionIdParameter.GetObjects <AccountPartition>(null, DirectorySessionFactory.Default.CreateTopologyConfigurationSession(ConsistencyMode.PartiallyConsistent, ADSessionSettings.SessionSettingsFactory.Default.FromRootOrgScopeSet(), 548, "ResolvePartitionId", "f:\\15.00.1497\\sources\\dev\\Management\\src\\Management\\Deployment\\NewOrganizationTask.cs"), null, out localizedString);
            Exception ex = null;

            using (IEnumerator <AccountPartition> enumerator = objects.GetEnumerator())
            {
                if (enumerator.MoveNext())
                {
                    AccountPartition accountPartition = enumerator.Current;
                    if (!accountPartition.TryGetPartitionId(out result))
                    {
                        ex = new NotSupportedException(Strings.ErrorCorruptedPartition(accountPartitionIdParameter.ToString()));
                    }
                    else if (enumerator.MoveNext())
                    {
                        ex = new ManagementObjectAmbiguousException(Strings.ErrorObjectNotUnique(accountPartitionIdParameter.ToString()));
                    }
                    if (accountPartition.IsSecondary)
                    {
                        ex = new ArgumentException(Strings.ErrorSecondaryPartitionNotEnabledForProvisioning(accountPartitionIdParameter.RawIdentity));
                    }
                }
                else
                {
                    ex = new ManagementObjectNotFoundException(localizedString ?? Strings.ErrorObjectNotFound(accountPartitionIdParameter.ToString()));
                }
            }
            if (ex != null)
            {
                errorLogger(ex, ErrorCategory.InvalidArgument, accountPartitionIdParameter);
            }
            return(result);
        }