枚举AD对象的所有属性(甚至未设置)

时间:2013-12-20 17:33:01

标签: c# active-directory ldap

我正在尝试查找在AD环境中未使用的几个属性。只要没有使用,我就不在乎属性名称是什么。

我试图在C#中主要这样做,以便在解决这个问题时我可以探索这些类,但似乎找不到列出对象的所有属性的方法。 DirectoryEntry.Properties仅返回一组set属性(据我所知)。

那么可以查看对象的所有活动(可用)属性,还是只能查看当前使用某个值设置的属性?

编辑:当前代码......

using (var directoryObject = new DirectoryEntry("LDAP://CN=GroupCN,OU=groups,DC=domain,DC=com", "uid", "pass", AuthenticationTypes.ReadonlyServer)) {
    foreach (var prop in directoryObject.Properties.PropertyNames) {
        Console.WriteLine(prop.ToString() + " | " + directoryObject.Properties[prop.ToString()].Value.ToString());
    }
}

1 个答案:

答案 0 :(得分:0)

编辑:好的。所以我错过了所有可能的属性。所以我会解决这个问题。

由于DirectoryEntry对象是IDictionary的实现,因此实际上无法知道可以设置哪些属性。 IDictionary允许您根据对象添加任意数量的自定义属性。 System.DirectoryServices.Property集合的文档位于:http://msdn.microsoft.com/en-us/library/system.directoryservices.propertycollection(v=vs.100).aspx

以下将枚举LDAP搜索结果的所有当前属性。您可以对此进行调整以查找当前在搜索结果中返回的对象上使用的所有属性。

foreach (SearchResult item in searchResultCollection)
{
    foreach (string propKey in item.Properties.PropertyNames)
    {
        foreach (object property in item.Properties[propKey])
        {
            Console.WriteLine("{0} : {1}", propKey, property.ToString());
        }
    }
}