分享

AD账号信息

 实力决定地位 2013-08-21
 private const string domainName = "ms.com";
private const string adAdmin = "administrator";
private const string password = "pass@word1";
private const string ouName = "XX有限公司";

private DataTable GetADUsers()
{
DataTable dt
= new DataTable();
dt.Columns.Add(
"sAMAccountName");//账号
dt.Columns.Add("Name");//姓名
dt.Columns.Add("mail"); //邮箱地址
dt.Columns.Add("OU"); //用户组织

DirectoryEntry adRoot
= new DirectoryEntry("LDAP://" + domainName, adAdmin, password, AuthenticationTypes.Secure);
DirectoryEntry ou
= adRoot.Children.Find("OU=" + ouName);

DirectorySearcher mySearcher
= new DirectorySearcher(ou);
mySearcher.Filter
= ("(objectClass=user)"); //user表示用户,group表示组

foreach (System.DirectoryServices.SearchResult resEnt in mySearcher.FindAll())
{
DataRow dr
= dt.NewRow();
dr[
"sAMAccountName"] = string.Empty;
dr[
"Name"] = string.Empty;
dr[
"mail"] = string.Empty;
dr[
"OU"] = string.Empty;

DirectoryEntry user
= resEnt.GetDirectoryEntry();
if (user.Properties.Contains("sAMAccountName"))
{
dr[
"sAMAccountName"] = user.Properties["sAMAccountName"][0].ToString();
}
if (user.Properties.Contains("Name"))
{
dr[
"Name"] = user.Properties["Name"][0].ToString();
}
if (user.Properties.Contains("mail"))
{
dr[
"mail"] = user.Properties["mail"][0].ToString();
}
if (user.Parent.Name != string.Empty && user.Parent.Name.IndexOf('=') > -1)
{
//获取用户所在的组织单位
dr["OU"] = user.Parent.Name.Split('=')[1];
}
dt.Rows.Add(dr);
}
return dt;
}
}

如果想要知道用户信息中都包含哪些字段,可以foreach出来看看
DirectoryEntry user = resEnt.GetDirectoryEntry();
foreach (string property in user.Properties.PropertyNames)
{
Console.WriteLine(
"字段名: " + property);
}
private DataTable GetADUsersAllProperty()
{
Boolean done = true;
DataTable dt = new DataTable();
DirectoryEntry adRoot = new DirectoryEntry("LDAP://" + domainName);

DirectorySearcher mySearcher = new DirectorySearcher(adRoot);
mySearcher.Filter = ("(objectClass=user)"); //user表示用户,group表示组

foreach (System.DirectoryServices.SearchResult resEnt in mySearcher.FindAll())
{
DirectoryEntry user = resEnt.GetDirectoryEntry();
if (done)
{
foreach (string property in user.Properties.PropertyNames)
{
dt.Columns.Add(property);
}
done = false;
}

DataRow dr = dt.NewRow();
for (int i = 0; i < dt.Columns.Count; i++)
{
if (user.Properties.Contains(dt.Columns[i].ColumnName))
{
dr[i] = user.Properties[dt.Columns[i].ColumnName][0].ToString();
}else dr[i] = string.Empty;
}
dt.Rows.Add(dr);
}
return dt;
}

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约