Как отобразить значение коллекции результатов поиска из Active Directory в C #? - PullRequest
0 голосов
/ 22 мая 2018

Мой босс отправляет мне текстовый файл с некоторыми идентификационными номерами.Мне нужно получить некоторую информацию от пользователей, которые имеют эти номера идентификаторов.

Я никогда ничего не делал с Active Directory, поэтому я немного растерялся.Сейчас я просто пытаюсь убедиться, что могу получить доступ к свойству "muID" из AD.Но когда я ищу AD для свойства и пытаюсь получить значение свойства, я получаю вывод его "System.DirectoryServices.ResultPropertyValueCollection" вместо значения, которое должно быть похоже на "111123456."

Вот мой код:

SearchResultCollection sResults = null;
string path = "LDAP://muad1";

DirectoryEntry dEntry = new DirectoryEntry(path);
DirectorySearcher dSearcher = new DirectorySearcher(dEntry);

dSearcher.Filter = "(&(objectClass=user))";
dSearcher.PropertiesToLoad.Add("muID");

SearchResultCollection results = dSearcher.FindAll();

if (results != null)
{
    foreach (SearchResult result in results)
    {                    
        Console.WriteLine(result.ToString());
    }
}

Но это не работает.Я пытался искать вокруг, но я не могу ничего, что работает.Я пробовал это

Console.WriteLine(result.Properties["muID"].ToString());

Console.WriteLine(dEntry.Properties[result].ToString());

Console.WriteLine(dEntry.Properties[result][0].ToString());

Console.WriteLine(dEntry.Properties["result"].ToString());

, но ни один из них не работает.Они либо выдают ошибку, либо делают то же самое, что и блок кода.

Опять же, я хочу убедиться, что у меня есть доступ к этому свойству, чтобы я мог затем получить информацию, которую я хочу.Я думал, что отображение значения свойства будет хорошим способом проверить.Но это не то, что нужно.

1 Ответ

0 голосов
/ 22 мая 2018

О, я чувствую, что вы так близки.

A SearchResultCollection содержит SearchResult экземпляров: Информация о SearchResultCollection

A SearchResult содержитProperties свойство: Информация о SearchResult

SearchResult Properties - это ResultPropertyCollection: Информация о ResultPropertyCollection

При обновленииВаш код от

Console.WriteLine(result.ToString());

до:

Console.WriteLine(result.Properties["muID"][0].ToString());

, тогда вы должны найти то, что ищете.Чтобы быть в безопасности, я также должен убедиться, что перед доступом к элементу в [0] вы проверяете, чтобы убедиться, что он существует в первую очередь.Вы можете столкнуться с исключением, если у пользователя вообще нет этого свойства.

Редактировать: Это может помочь вам увидеть, какие пары свойств и значений доступны для использования.Если вы нигде не видите «muID», вот почему вы получаете сообщение об ошибке.

if (results != null)
{
    foreach (SearchResult result in results)
    {                    
        foreach(string propName in result.Properties.PropertyNames)
        {
            foreach(object myCollection in result.Properties[propName])
            {
                Console.WriteLine(propName + " : " + myCollection.ToString());
            }
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...