我是活动目录的新手,我正在尝试显示Active Directory中组类别的详细信息。以下是我的代码:
entry = new DirectoryEntry(strPath);
DirectoryEntry schema = entry.SchemaEntry;
System.DirectoryServices.DirectorySearcher myNewSearcher = new System.DirectoryServices.DirectorySearcher(entry);
mySearcher.Filter = ("(objectClass=*)");
foreach (System.DirectoryServices.SearchResult resEnt in mySearcher.FindAll())
{
Console.WriteLine("First Name: " + resEnt.Properties["givenName"][0].ToString());
Console.WriteLine("Last Name : " + resEnt.Properties["sn"][0].ToString());
Console.WriteLine("SAM account name : " + resEnt.Properties["samAccountName"][0].ToString());
Console.WriteLine("User principal name: " + resEnt.Properties["userPrincipalName"][0].ToString());
Console.WriteLine();
}
我得到的错误是:
未处理的类型' System.ArgumentOutOfRangeException'发生在mscorlib.dll中附加信息:索引超出范围。必须是非负数且小于集合的大小。
我可以得到一些帮助吗?
答案 0 :(得分:2)
可能未设置AD属性 - 在这种情况下,调用.Properties[..][0]
会导致此异常。
您需要检查从DirectorySearcher
返回的每个属性是否已设置 -
if(resEnt.Properties["givenName"] != null && resEnt.Properties["givenName"].Count > 0) {
Console.WriteLine("First Name: " + resEnt.Properties["givenName"][0].ToString());
}