Невозможно прочитать поле Mobile # из Active Directory - PullRequest
0 голосов
/ 21 марта 2019

Я пытаюсь подключиться к Active Directory (2003), чтобы обновить поле Mobile #, которое появляется в адресной книге OutLook, как на прикрепленном изображении ниже.

enter image description here

Я могу прочитать большинство полей, используя приведенный ниже код, но поля otherTelephone, mobile, otherMobile не найдены. В чем причина?

static void Main(string[] args)
    {
        Console.Write("Enter user      : ");
        String username = Console.ReadLine();

        try
        {
            DirectoryEntry myLdapConnection = createDirectoryEntry();

            DirectorySearcher search = new DirectorySearcher(myLdapConnection,);
            search.Filter = "(sAMAccountName=" + username + ")";
            search.PropertiesToLoad.Add("title");
            search.PropertiesToLoad.Add("street");
            search.PropertiesToLoad.Add("department");
            search.PropertiesToLoad.Add("mail");
            search.PropertiesToLoad.Add("manager");
            search.PropertiesToLoad.Add("telephoneNumber");
            search.PropertiesToLoad.Add("otherTelephone");
            search.PropertiesToLoad.Add("mobile");
            search.PropertiesToLoad.Add("otherMobile");


            SearchResult result = search.FindOne();

            if (result != null)
            {
                DirectoryEntry entryToUpdate = result.GetDirectoryEntry();
                Console.WriteLine("Current title   : " + entryToUpdate.Properties["title"][0].ToString());

                //Console.Write("\n\nEnter new title : ");
                //String newTitle = Console.ReadLine();
                //entryToUpdate.Properties["title"].Value = newTitle;
                //entryToUpdate.CommitChanges();
                //Console.WriteLine("\n\n...new title saved");
                Console.ReadLine();
            }

            else Console.WriteLine("User not found!");
        }

        catch (Exception e)
        {
            Console.WriteLine("Exception caught:\n\n" + e.ToString());
        }
    }

    static DirectoryEntry createDirectoryEntry()
    {
        // create and return new LDAP connection with desired settings  
        DirectoryEntry ldapConnection = new DirectoryEntry("abc.ca");
        ldapConnection.Path = "LDAP://OU=staffusers,DC=leeds-art,DC=ac,DC=uk";
        ldapConnection.AuthenticationType = AuthenticationTypes.Secure;
        return ldapConnection;
    }

1 Ответ

0 голосов
/ 21 марта 2019

Я думаю, что ваша проблема в том, что некоторые (большинство читают) атрибуты не устанавливаются по умолчанию для объекта, они вообще существуют только для этого объекта, когда значение устанавливается впервые.Вам нужно обновить свой код, чтобы он обрабатывал значение, которого вообще не было, и предполагал, что это означает, что у него нет заданного значения.

Вы можете проверить это, выполнив запрос к определенному пользователю, наблюдая отсутствие mobile свойство, затем добавить значение в это поле и затем удалить его.Затем вы должны увидеть, что свойство с тех пор включено в список для этого пользователя.

...