2011-11-03 117 views
1

我想对AD进行LDAP查询以拉取用户的位置(城市)。这是我已经放在一起:如何从C#.net中的Active Directory中拉出用户的城市位置

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一直保持回来null,任何人都可以帮助我指出正确的方向吗?谢谢!

回答

4

,我认为你的错误是,你搜索的位置,但设置用户名作为值...

您要搜索的用户名 - 抢位置为该用户:

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用户输入&计算机工具)存储在DirectoryEntryl属性。

所有属性的完整列表以及它们如何从ADU &在C刀映射到实际的LDAP对象和属性,看Robert Mueller's web site

+0

伟大的作品!谢谢 – Ted

相关问题