2015-10-15 51 views
0

創建一個名爲GetAdUsers的方法,該方法應返回有關Active Directory中每個用戶(包括用戶標識)的一組信息。返回Active Directory中的用戶Id的列表

我成功返回用戶EmailUserNameDisplayName,但不能得到用戶的IDS

如何從Active Directory獲取用戶ID?

我的用戶模型

public class Users 
{ 
    public string Email { get; set; } 
    public string UserName { get; set; } 
    public string DisplayName { get; set; } 
    public bool IsMapped { get; set; } 
    public int UserId { get; set; } 
} 

我的方法獲得的Active Directory信息

public List<Users> GetAdUsers() 
{ 
    try 
    { 
     List<Users> lstADUsers = new List<Users>(); 
     string DomainPath = ConfigurationManager.AppSettings["...ldapPathHere..."]; 

     // Encapsulating an object in Active Directory Domain Service - the DirectoryEntry is initializing a new instance of AD Domain Services 
     DirectoryEntry searchRoot = new DirectoryEntry(DomainPath); 

     // Searching for all users in the domain 
     DirectorySearcher search = new DirectorySearcher(searchRoot); 

     // Filtering my results 
     search.Filter = "(&(objectClass=user)(objectCategory=person))"; 
     search.PropertiesToLoad.Add("samaccountname"); 
     search.PropertiesToLoad.Add("mail"); 
     search.PropertiesToLoad.Add("usergroup"); 
     search.PropertiesToLoad.Add("displayname");//first name 
     search.PropertiesToLoad.Add("userid"); 

     SearchResult result; 
     SearchResultCollection resultCol = search.FindAll(); 

     if (resultCol != null) 
     { 
      for (int counter = 0; counter < resultCol.Count; counter++) 
      { 
       string UserNameEmailString = string.Empty; 
       result = resultCol[counter]; 
       if (result.Properties.Contains("samaccountname") && 
        result.Properties.Contains("mail") && 
        result.Properties.Contains("displayname") && 
        result.Properties.Contains("userid")) 
       { 
        Users objSurveyUsers = new Users(); 
        objSurveyUsers.Email = (String)result.Properties["mail"][0] + 
         "^" + (String)result.Properties["displayname"][0]; 
        objSurveyUsers.UserName = (String)result.Properties["samaccountname"][0]; 
        objSurveyUsers.DisplayName = (String)result.Properties["displayname"][0]; 
        objSurveyUsers.UserId = (int) result.Properties["userid"][0]; 
        lstADUsers.Add(objSurveyUsers); 
       } 
      } 
     } 
     return lstADUsers; 
    } 
    catch (Exception ex) 
    { 
     throw; 
    } 
} 
+0

在基本AD架構中沒有稱爲'userId'的屬性。你試圖找回什麼? –

回答

0

我想你指的是安全標識符或SID。這是在objectSID屬性中進行的。

0

你的意思是samAccount或的samAccountName(我不知道哪一個是正確的)

編輯:

對不起,下次我應該完整地閱讀代碼 - 不是LDAP查詢區分大小寫?

相關問題