Как получить местоположение города пользователя из Active Directory в C # .net - PullRequest
1 голос
/ 03 ноября 2011

Я бы хотел выполнить запрос LDAP к AD, чтобы получить местоположение пользователя (город). Вот что я собрал:

    public static string GetUserLocation(string userName)
    {            
        string userLoc = "";

        DirectoryEntry entry = new DirectoryEntry("LDAP://FTLAD04.corp.myDomain.com");
        DirectorySearcher dSearch = new DirectorySearcher(entry);

        dSearch.Filter = "(&(objectClass=user)(l=" + userName + "))";
        dSearch.PropertiesToLoad.Add("city");

        SearchResult result = dSearch.FindOne();
        userLoc = result.ToString();

        entry.Close();

        return userLoc;
    }

Мой SearchResult продолжает возвращаться к нулю, может кто-нибудь помочь направить меня в правильном направлении? Спасибо!

1 Ответ

5 голосов
/ 03 ноября 2011

Я думаю, что ваша ошибка в том, что вы ищете местоположение, но устанавливаете имя пользователя в качестве значения ...

Вы должны найти имя пользователя и указать местоположение этого пользователя:

public static string GetUserLocation(string userName)
{            
    string userLoc = "";

    DirectoryEntry entry = new DirectoryEntry("LDAP://FTLAD04.corp.myDomain.com");
    DirectorySearcher dSearch = new DirectorySearcher(entry);

    dSearch.Filter = "(&(objectClass=user)(samAccountName=" + userName + "))";
    dSearch.PropertiesToLoad.Add("l");

    SearchResult result = dSearch.FindOne();

    if(result != null)
    {
       if(result.Properties["l"] != null && result.Properties["l"].Count > 0)
       {
          string location =  result.Properties["l"][0].ToString();
       }
    }

    return userLoc;
}

В AD город пользователя (который вы вводите в инструменте Active Directory - пользователи и компьютеры) хранится в атрибуте l DirectoryEntry.

Полный список всех атрибутов и того, как они отображаются из инструмента ADU & C в фактические объекты и атрибуты LDAP, см. Веб-сайт Роберта Мюллера

...