0

我目前遇到一个问题,即我无法将我的组织单位识别为创建新 Active Directory 用户并将其分配给 OU 的参数。它给了我错误,“GetPrincipalContext”需要 1 个参数,而我因为出了什么问题而迷失了方向。如果需要更多信息,请告诉我。

    #region Variables
    private string sdomain = "test";
    private string sdefaultou = "OU=Dackup Users, OU=Dackup, DC=Test, Dc=com";
    private string sdefaultrootOU = "DC=test, DC=com";
    private string sServiceUser = @"ServiceUser";
    private string sServicePassword = "ServicePassword";
    private string sGroup = "Dackup";
    private string sUserName = "LocalTest";
    private string sOU = "Organizational Unit locations";
    #endregion

    #region Validate
    public PrincipalContext GetPrincipalContext()//(string sdomain, string sdefaultou, string sservicepassword
    {
        PrincipalContext oPrincipal = new PrincipalContext(ContextType.Domain, sdomain, sdefaultou, ContextOptions.SimpleBind, sServiceUser, sServicePassword);
        return oPrincipal;
    }

    public UserPrincipal GetUser(string sUserName)
    {
        PrincipalContext oPrinciple = GetPrincipalContext();
        UserPrincipal oUserprinciple = UserPrincipal.FindByIdentity(oPrinciple, sUserName);
        return oUserprinciple;
    }

    public bool IsUserExisting(string sUserName)
    {
        if (GetUser(sUserName) == null)
        {
            return false;
        }
        else
        {
            return true;
        }
    }

    /*   public bool ValidateCredential (string sUserName, string sPassword)
    {
        PrincipalContext oprincipalc = "fix"();
        return oprincipalc.ValidateCredentials(sUserName, sPassword);
    } */

    public UserPrincipal CreateNewUser(string sOU, string sUserName, string sPassword, string sGivenName, string sSurname)
    {
        if (!IsUserExisting(sUserName))
        {
            PrincipalContext oPrincipalContext = GetPrincipalContext(sOU); //This is where the error occurs

            UserPrincipal oUserPrincipal = new UserPrincipal(oPrincipalContext, sUserName, sPassword, true /*Enabled or not*/);

            //User Log on Name
            oUserPrincipal.UserPrincipalName = sUserName;
            oUserPrincipal.GivenName = sGivenName;
            oUserPrincipal.Surname = sSurname;
            oUserPrincipal.Save();

            return oUserPrincipal;
        }
        else
        {
            return GetUser(sUserName);
        }
    }

    public GroupPrincipal GetGroup(string sGroup)
    {
        PrincipalContext oPrincipal = GetPrincipalContext();
        GroupPrincipal ogroup = GroupPrincipal.FindByIdentity(oPrincipal, sGroup);
        return ogroup;
    }

    public bool IsUserGroupMember(string sGroup, string sUserName)
    {
        UserPrincipal oUser = GetUser(sUserName);
        GroupPrincipal ogroup = GetGroup(sGroup);

        if (oUser != null && ogroup != null)
        {
            return ogroup.Members.Contains(oUser);
        }
        else
        {
            return false;
        }
    }

    public bool AddUserToGroup(string sUserName, string sGroup)
    {
        try
        {
            UserPrincipal oUserPrincipal = GetUser(sUserName);
            GroupPrincipal oGroupPrincipal = GetGroup(sGroup);

            if (oUserPrincipal != null && oGroupPrincipal != null)
            {
                if (!IsUserGroupMember(sUserName, sGroup))
                {
                    oGroupPrincipal.Members.Add(oUserPrincipal);
                    oGroupPrincipal.Save();
                }
            }
            return true;
        }
        catch
        {
            return false;
        }
    }

    private void button1_Click(object sender, EventArgs e)
    {
        CreateNewUser();
    }
}
#endregion
4

1 回答 1

1

使用下面的代码

PrincipalContext ouContex = new PrincipalContext(ContextType.Domain, "TestDomain.local",           "OU=TestOU,DC=TestDomain,DC=local");

        for (int i = 0; i < 3; i++)
        {
            try
            {
                UserPrincipal up = new UserPrincipal(ouContex);
                up.SamAccountName = "TestUser" + i;
                up.SetPassword("password");
                up.Enabled = true;
                up.ExpirePasswordNow();
                up.Save();
            }
            catch (Exception ex)
            {

            }
        }
于 2013-08-12T11:53:34.107 回答