2

我正在尝试查询 AD 以检索用户数据。

查询工作正常,但在枚举通过 GetDirectoryEntry 返回的属性时,我无法看到我在 Active Directory Explorer 中看到的所有属性。

下面的代码片段:

offEntry = pResult.GetDirectoryEntry();
foreach (PropertyValueCollection o in offEntry.Properties)
{
    Debug.Print(o.PropertyName + " = " + o.Value.ToString());
}

我看到像“displayName”和“SAMAccountName”等属性,但不是我真正想要的属性,例如:“postalCode”、“streetAddress”。

我已经尝试为这个特定问题寻找解决方案,但已经走到了死胡同。我错过了什么???

问候彼得

4

2 回答 2

1

您应该能够使用这样的搜索器类。

DirectorySearcher search = new DirectorySearcher(entry);
                search.Filter = "(sAMAccountName=" + userAccount + ")";
                search.PropertiesToLoad.Add("mail");
                SearchResult result = search.FindOne();

然后通过该行加载您想要的属性

            search.PropertiesToLoad.Add("mail");

然后在你的SearchResult你将能够读取属性

于 2012-07-06T13:54:29.417 回答
1

这是一个旧的,但也许它可以帮助别人:

  1. 将 DirectorySearcher 的 PropertiesToLoad 保留为(无 .add)将导致所有属性都已包含 value
  2. SearchResult 有一个返回实际 DirectoryEntry 的方法:result.GetDirectoryEntry()。哪个(我仍在试图阻止)将加载所有已填充值的属性。
  3. DirectoryEntry 有一个“InvokeSet”方法来填充尚未填充的属性,之后它们将被返回。(还有一个“InvokeGet”方法,还没试过,但也许它有助于获取空属性)
于 2018-06-04T09:19:44.017 回答