Пример #1
0
        internal void MoveOperationMasterRole(ADOperationMasterRole operationMasterRole, bool seize, out bool wasSeized)
        {
            this.Init();
            MoveADOperationMasterRoleRequest moveADOperationMasterRoleRequest = new MoveADOperationMasterRoleRequest();

            moveADOperationMasterRoleRequest.Seize = seize;
            ADOperationMasterRole aDOperationMasterRole = operationMasterRole;

            switch (aDOperationMasterRole)
            {
            case ADOperationMasterRole.PDCEmulator:
            {
                moveADOperationMasterRoleRequest.OperationMasterRole = ActiveDirectoryOperationMasterRole.PDCEmulator;
                break;
            }

            case ADOperationMasterRole.RIDMaster:
            {
                moveADOperationMasterRoleRequest.OperationMasterRole = ActiveDirectoryOperationMasterRole.RIDMaster;
                break;
            }

            case ADOperationMasterRole.InfrastructureMaster:
            {
                moveADOperationMasterRoleRequest.OperationMasterRole = ActiveDirectoryOperationMasterRole.InfrastructureMaster;
                break;
            }

            case ADOperationMasterRole.SchemaMaster:
            {
                moveADOperationMasterRoleRequest.OperationMasterRole = ActiveDirectoryOperationMasterRole.SchemaMaster;
                break;
            }

            case ADOperationMasterRole.DomainNamingMaster:
            {
                moveADOperationMasterRoleRequest.OperationMasterRole = ActiveDirectoryOperationMasterRole.DomainNamingMaster;
                break;
            }
            }
            MoveADOperationMasterRoleResponse moveADOperationMasterRoleResponse = this._topoMgmt.MoveADOperationMasterRole(this._sessionHandle, moveADOperationMasterRoleRequest);

            wasSeized = moveADOperationMasterRoleResponse.WasSeized;
        }
Пример #2
0
		internal void MoveOperationMasterRole(ADOperationMasterRole operationMasterRole, bool seize, out bool wasSeized)
		{
			this.Init();
			MoveADOperationMasterRoleRequest moveADOperationMasterRoleRequest = new MoveADOperationMasterRoleRequest();
			moveADOperationMasterRoleRequest.Seize = seize;
			ADOperationMasterRole aDOperationMasterRole = operationMasterRole;
			switch (aDOperationMasterRole)
			{
				case ADOperationMasterRole.PDCEmulator:
				{
					moveADOperationMasterRoleRequest.OperationMasterRole = ActiveDirectoryOperationMasterRole.PDCEmulator;
					break;
				}
				case ADOperationMasterRole.RIDMaster:
				{
					moveADOperationMasterRoleRequest.OperationMasterRole = ActiveDirectoryOperationMasterRole.RIDMaster;
					break;
				}
				case ADOperationMasterRole.InfrastructureMaster:
				{
					moveADOperationMasterRoleRequest.OperationMasterRole = ActiveDirectoryOperationMasterRole.InfrastructureMaster;
					break;
				}
				case ADOperationMasterRole.SchemaMaster:
				{
					moveADOperationMasterRoleRequest.OperationMasterRole = ActiveDirectoryOperationMasterRole.SchemaMaster;
					break;
				}
				case ADOperationMasterRole.DomainNamingMaster:
				{
					moveADOperationMasterRoleRequest.OperationMasterRole = ActiveDirectoryOperationMasterRole.DomainNamingMaster;
					break;
				}
			}
			MoveADOperationMasterRoleResponse moveADOperationMasterRoleResponse = this._topoMgmt.MoveADOperationMasterRole(this._sessionHandle, moveADOperationMasterRoleRequest);
			wasSeized = moveADOperationMasterRoleResponse.WasSeized;
		}
Пример #3
0
        protected void TargetOperationMasterRole(ADOperationMasterRole fsmoRole)
        {
            bool          flag;
            ADSessionInfo sessionInfo = this.GetSessionInfo();
            string        server      = sessionInfo.Server;

            if (server != null)
            {
                flag = this.DoesServerNameRepresentDomainName(server);
            }
            else
            {
                flag = true;
            }
            if (flag)
            {
                string value = null;
                if (fsmoRole == ADOperationMasterRole.PDCEmulator || fsmoRole == ADOperationMasterRole.RIDMaster || fsmoRole == ADOperationMasterRole.InfrastructureMaster)
                {
                    using (ADTopologyManagement aDTopologyManagement = new ADTopologyManagement(sessionInfo))
                    {
                        ADObject domain = aDTopologyManagement.GetDomain();
                        ADOperationMasterRole aDOperationMasterRole = fsmoRole;
                        switch (aDOperationMasterRole)
                        {
                        case ADOperationMasterRole.PDCEmulator:
                        {
                            value = domain["PDCEmulator"].Value as string;
                            break;
                        }

                        case ADOperationMasterRole.RIDMaster:
                        {
                            value = domain["RIDMaster"].Value as string;
                            break;
                        }

                        case ADOperationMasterRole.InfrastructureMaster:
                        {
                            value = domain["InfrastructureMaster"].Value as string;
                            break;
                        }
                        }
                    }
                    if (string.IsNullOrEmpty(value))
                    {
                        object[] objArray = new object[2];
                        objArray[0] = fsmoRole;
                        objArray[1] = server;
                        throw new ADException(string.Format(CultureInfo.CurrentCulture, StringResources.FSMORoleNotFoundInDomain, objArray));
                    }
                }
                else
                {
                    if (fsmoRole == ADOperationMasterRole.SchemaMaster || fsmoRole == ADOperationMasterRole.DomainNamingMaster)
                    {
                        using (ADTopologyManagement aDTopologyManagement1 = new ADTopologyManagement(sessionInfo))
                        {
                            ADEntity forest = aDTopologyManagement1.GetForest();
                            ADOperationMasterRole aDOperationMasterRole1 = fsmoRole;
                            switch (aDOperationMasterRole1)
                            {
                            case ADOperationMasterRole.SchemaMaster:
                            {
                                value = forest["SchemaMaster"].Value as string;
                                break;
                            }

                            case ADOperationMasterRole.DomainNamingMaster:
                            {
                                value = forest["DomainNamingMaster"].Value as string;
                                break;
                            }
                            }
                        }
                        if (string.IsNullOrEmpty(value))
                        {
                            object[] objArray1 = new object[2];
                            objArray1[0] = fsmoRole;
                            objArray1[1] = server;
                            throw new ADException(string.Format(CultureInfo.CurrentCulture, StringResources.FSMORoleNotFoundInForest, objArray1));
                        }
                    }
                }
                ADSessionInfo aDSessionInfo = sessionInfo.Copy();
                aDSessionInfo.Server = value;
                if (!this.SessionSpecified())
                {
                    this.SetPipelinedSessionInfo(aDSessionInfo);
                }
                else
                {
                    this.SetDefaultSessionInfo(aDSessionInfo);
                    return;
                }
            }
        }
        private bool MoveADDSOperationMasterRoleProcessCSRoutine()
        {
            ADObject aDObject;
            bool     flag = false;
            string   value;
            int?     nullable;

            this._identityDSObj = this._cmdletParameters["Identity"] as ADDirectoryServer;
            this._seize         = this._cmdletParameters.GetSwitchParameterBooleanValue("Force");
            this._operationMasterRolesToTransfer = this._cmdletParameters["OperationMasterRole"] as ADOperationMasterRole[];
            base.SetPipelinedSessionInfo(this._identityDSObj.SessionInfo);
            CmdletSessionInfo cmdletSessionInfo = this.GetCmdletSessionInfo();

            if (cmdletSessionInfo.ConnectedADServerType == ADServerType.ADLDS)
            {
                ADOperationMasterRole[] aDOperationMasterRoleArray = this._operationMasterRolesToTransfer;
                for (int i = 0; i < (int)aDOperationMasterRoleArray.Length; i++)
                {
                    ADOperationMasterRole aDOperationMasterRole  = aDOperationMasterRoleArray[i];
                    ADOperationMasterRole aDOperationMasterRole1 = aDOperationMasterRole;
                    switch (aDOperationMasterRole1)
                    {
                    case ADOperationMasterRole.PDCEmulator:
                    case ADOperationMasterRole.RIDMaster:
                    case ADOperationMasterRole.InfrastructureMaster:
                    {
                        object[] str = new object[1];
                        str[0] = aDOperationMasterRole.ToString();
                        throw new ArgumentException(string.Format(CultureInfo.CurrentCulture, StringResources.MoveOperationMasterRoleNotApplicableForADLDS, str));
                    }
                    }
                }
            }
            ADDirectoryServerFactory <ADDirectoryServer> aDDirectoryServerFactory = new ADDirectoryServerFactory <ADDirectoryServer>();

            aDDirectoryServerFactory.SetCmdletSessionInfo(cmdletSessionInfo);
            ADObject         directoryObjectFromIdentity = aDDirectoryServerFactory.GetDirectoryObjectFromIdentity(this._identityDSObj, cmdletSessionInfo.DefaultPartitionPath);
            string           distinguishedName           = directoryObjectFromIdentity.DistinguishedName;
            ADObjectSearcher aDObjectSearcher            = SearchUtility.BuildSearcher(cmdletSessionInfo.ADSessionInfo, distinguishedName, ADSearchScope.Base);

            using (aDObjectSearcher)
            {
                aDObjectSearcher.Filter = ADOPathUtil.CreateFilterClause(ADOperator.Like, "objectClass", "*");
                aDObjectSearcher.Properties.Add("dNSHostName");
                directoryObjectFromIdentity = aDObjectSearcher.FindOne();
                if (directoryObjectFromIdentity != null)
                {
                    if (directoryObjectFromIdentity["dNSHostName"] == null)
                    {
                        value = null;
                    }
                    else
                    {
                        value = (string)directoryObjectFromIdentity["dNSHostName"].Value;
                    }
                    string str1 = value;
                    if (!string.IsNullOrEmpty(str1))
                    {
                        if (cmdletSessionInfo.ConnectedADServerType == ADServerType.ADLDS)
                        {
                            string           str2 = string.Concat("CN=NTDS Settings,", distinguishedName);
                            ADObjectSearcher aDObjectSearcher1 = SearchUtility.BuildSearcher(cmdletSessionInfo.ADSessionInfo, str2, ADSearchScope.Base);
                            using (aDObjectSearcher1)
                            {
                                aDObjectSearcher1.Filter = ADOPathUtil.CreateFilterClause(ADOperator.Like, "objectClass", "*");
                                aDObjectSearcher1.Properties.Add("msDS-PortLDAP");
                                aDObject = aDObjectSearcher1.FindOne();
                            }
                            if (aDObject != null)
                            {
                                if (aDObject["msDS-PortLDAP"] == null)
                                {
                                    int?nullable1 = null;
                                    nullable = nullable1;
                                }
                                else
                                {
                                    nullable = (int?)aDObject["msDS-PortLDAP"].Value;
                                }
                                int?nullable2 = nullable;
                                if (nullable2.HasValue)
                                {
                                    str1 = string.Concat(str1, ":", nullable2);
                                }
                                else
                                {
                                    object[] objArray = new object[2];
                                    objArray[0] = "msDS-PortLDAP";
                                    objArray[1] = aDObject.DistinguishedName;
                                    throw new ADException(string.Format(CultureInfo.CurrentCulture, StringResources.AttributeNotFoundOnObject, objArray));
                                }
                            }
                            else
                            {
                                throw new ADIdentityNotFoundException(string.Concat(StringResources.ObjectNotFound, " : ", str2));
                            }
                        }
                        ADSessionInfo aDSessionInfo = cmdletSessionInfo.ADSessionInfo.Copy();
                        aDSessionInfo.Server = str1;
                        using (ADTopologyManagement aDTopologyManagement = new ADTopologyManagement(aDSessionInfo))
                        {
                            ADOperationMasterRole[] aDOperationMasterRoleArray1 = this._operationMasterRolesToTransfer;
                            for (int j = 0; j < (int)aDOperationMasterRoleArray1.Length; j++)
                            {
                                ADOperationMasterRole aDOperationMasterRole2 = aDOperationMasterRoleArray1[j];
                                string   str3      = string.Format(CultureInfo.CurrentCulture, StringResources.MoveOperationMasterRoleDescription, new object[0]);
                                object[] objArray1 = new object[2];
                                objArray1[0] = aDOperationMasterRole2.ToString();
                                objArray1[1] = str1;
                                string str4 = string.Format(CultureInfo.CurrentCulture, StringResources.MoveOperationMasterRoleWarning, objArray1);
                                string str5 = string.Format(CultureInfo.CurrentCulture, StringResources.MoveOperationMasterRoleCaption, new object[0]);
                                if (base.ShouldProcessOverride(str3, str4, str5))
                                {
                                    aDTopologyManagement.MoveOperationMasterRole(aDOperationMasterRole2, this._seize, out flag);
                                }
                            }
                        }
                    }
                    else
                    {
                        object[] distinguishedName1 = new object[2];
                        distinguishedName1[0] = "dNSHostName";
                        distinguishedName1[1] = directoryObjectFromIdentity.DistinguishedName;
                        throw new ADException(string.Format(CultureInfo.CurrentCulture, StringResources.AttributeNotFoundOnObject, distinguishedName1));
                    }
                }
                else
                {
                    throw new ADIdentityNotFoundException(string.Concat(StringResources.ObjectNotFound, " : ", distinguishedName));
                }
            }
            return(true);
        }