Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# GetDirectoryEntry未返回所有属性_C#_Active Directory - Fatal编程技术网

C# GetDirectoryEntry未返回所有属性

C# GetDirectoryEntry未返回所有属性,c#,active-directory,C#,Active Directory,我正在尝试查询AD以检索用户数据 查询工作正常,但在枚举通过GetDirectoryEntry返回的属性时 我无法在Active Directory资源管理器中看到所有属性 下面的代码片段: offEntry = pResult.GetDirectoryEntry(); foreach (PropertyValueCollection o in offEntry.Properties) { Debug.Print(o.PropertyName + " = " + o.Value.ToSt

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

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

下面的代码片段:

offEntry = pResult.GetDirectoryEntry();
foreach (PropertyValueCollection o in offEntry.Properties)
{
    Debug.Print(o.PropertyName + " = " + o.Value.ToString());
}
我看到了“displayName”和“SAMAccountName”等属性,但不是我真正想要的属性,例如:“postalCode”、“streetAddress”

我曾试图寻找解决这个具体问题的办法,但已走到了死胡同。 我错过了什么

问候
Peter

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

DirectorySearcher search = new DirectorySearcher(entry);
                search.Filter = "(sAMAccountName=" + userAccount + ")";
                search.PropertiesToLoad.Add("mail");
                SearchResult result = search.FindOne();
然后通过行加载所需的属性

            search.PropertiesToLoad.Add("mail");

然后在您的
搜索结果中
您将能够读取属性

这是一个旧的,但可能对其他人有帮助:

  • 将DirectorySearcher的PropertiesToLoad保留为空(no.add)将导致所有已包含值的属性
  • SearchResult有一个返回实际DirectoryEntry的方法:result.GetDirectoryEntry()。这(我仍在努力防止)将加载所有已填充值的属性
  • DirectoryEntry有一个“InvokeSet”方法来填充尚未填充的属性,之后将返回这些属性。(还有一个“InvokeGet”方法,还没有尝试过,但它可能有助于获取空属性)
  • @peter试一试,如果你有权访问广告域,你应该能够使用它来查看你广告中的所有属性。我已经查看了我有权访问的广告,我无法看到这两个属性,因此除非它们位于你的广告中,否则你将无法输出它们。