Updating AD User Information

I have a problem updating user information in Active Directory database ...

When I run the following code, I get this error:

The specified attribute or directory service value does not exist

The problem is that the path it uses to store the information is:

CN=AD Test,OU=Container Name,DC=us,DC=flg,DC=int

      

Ad Test

is the username in AD that I am trying to update.

and I believe it should be:

CN=Ad Test,OU=Container Name, OU=Server Name,DC=us,DC=flg,DC=int

      

I am new to Directory services, so I would really appreciate any help figuring out why I can't update ... Thanks in advance

public bool UpdateActiveDirectory(string LdapServerName, string CustId, Employee SQLresult)
{
    try  
    {
        DirectoryEntry rootEntry = new DirectoryEntry("LDAP://" + LdapServerName, "usrename", "password", AuthenticationTypes.Secure);

        DirectorySearcher searcher = new DirectorySearcher(rootEntry); 
        searcher.Filter = "(sAMAccountName=" + SQLresult.LogonNT + ")";
        searcher.PropertiesToLoad.Add("title");
        searcher.PropertiesToLoad.Add("street");
        searcher.PropertiesToLoad.Add("1");
        searcher.PropertiesToLoad.Add("st");
        searcher.PropertiesToLoad.Add("postalCode");
        searcher.PropertiesToLoad.Add("department");
        searcher.PropertiesToLoad.Add("mail");
        searcher.PropertiesToLoad.Add("manager");
        searcher.PropertiesToLoad.Add("telephoneNumber");

        SearchResult result = searcher.FindOne();

        if (result != null)
        {
            // create new object from search result    
            DirectoryEntry entryToUpdate = result.GetDirectoryEntry();

            entryToUpdate.Properties["title"].Value = SQLresult.Title;
            entryToUpdate.Properties["street"].Value = SQLresult.Address;
            entryToUpdate.Properties["1"].Value = SQLresult.City;
            entryToUpdate.Properties["st"].Value = SQLresult.State;
            entryToUpdate.Properties["postalCode"].Value = SQLresult.ZipCode;
            entryToUpdate.Properties["department"].Value = SQLresult.Department;
            entryToUpdate.Properties["mail"].Value = SQLresult.EMailID;
            entryToUpdate.Properties["manager"].Value = SQLresult.ManagerName;
            entryToUpdate.Properties["telephoneNumber"].Value = SQLresult.Phone;

            entryToUpdate.CommitChanges();

            Console.WriteLine("User Updated");
        }
        else
        {
            Console.WriteLine("User not found!");
        }
    }
    catch (Exception e)
    {
        Console.WriteLine("Exception caught:\n\n" + e.ToString());
    } 

    return true;
}

      

+3


source to share


1 answer


Maybe just a typo?

Third property you are trying to update:

entryToUpdate.Properties["1"].Value = SQLresult.City;

      

- what is one ( 1

) there? It should be small L ( l

).

Also: the name of the manager must be the distinguished name of the manager - total



CN=Manager,CN=Ad Test,OU=Container Name, OU=Server Name,DC=us,DC=flg,DC=int 

      

the thing is not just the name itself.

If that doesn't help - go back to the old school debugging method:

  • update only one property; if it fails -> that's your problem case is figuring out why it is the problem.
  • If it works: uncomment the second property and run again

-> repeat over and over until you find your culprit

+3


source







All Articles