我需要从 Active Directory 中检索所有与用户相关的信息。
我的代码检索username,useremail, Full Name
了用户,但是当我尝试检索经理的姓名时,代码会引发异常。
以下是我的代码:
DataTable table = new DataTable();
table = dt;
DirectoryEntry dEntry = new DirectoryEntry("LDAP://" + domain);
DirectorySearcher dSearch = new DirectorySearcher(dEntry);
SearchResultCollection sResultcol;
try
{
dSearch.Filter = "(objectCategory=organizationalUnit)";
sResultcol = dSearch.FindAll();
foreach (SearchResult sResult in sResultcol)
{
DirectoryEntry dUserEntry = new DirectoryEntry();
DirectorySearcher dSearchUsers = new DirectorySearcher(dEntry);
SearchResultCollection sUserResults;
dSearchUsers.Filter = "(objectClass=User)";
dSearchUsers.SearchScope = SearchScope.Subtree;
sUserResults = dSearchUsers.FindAll();
foreach (SearchResult sUserResult in sUserResults)
{
DataRow dr = table.NewRow();
string empCode = sResult.Properties["pager"].ToString();
if (empCode.Length != 0)
{
dr["empcode"] = empCode;
string namee = sUserResult.Properties["samaccountname"][0].ToString();
dr["name"] = namee;
string disname = sResult.Properties["distinguishedName"][0].ToString();
dr["ou"] = disname;
string manager = sUserResult.Properties["manager"].Value.ToString();
dr["manager"] = manager;
dt.Rows.Add(dr);
}
}
dUserEntry.Close();
}
return dt;
}
catch (Exception ex)
{
throw new Exception("Error at retrieveUsers() : " + ex.Message.ToString());
}
我得到了例外
指数超出范围。必须是非负数且小于集合的大小。参数名称:索引
当我尝试获取经理姓名时。
根据 Active Directory 的结构,管理员的姓名位于另一个选项卡中。
有没有人知道从 Active Directory 的常规以外的选项卡中检索数据?
请帮我。
提前致谢。