使用DirectorySearcher的奇怪结果

时间:2011-08-23 06:33:11

标签: active-directory

我使用DirectorySearcher从公司AD服务器获取所有AD用户的显示名称,我们有大约10万条记录,大部分结果都是正确的。

但我们有近100个用户的显示名称是“$ CimsUserVersion2”,这真是一个奇怪的结果,我检查了outlook也同步显示名称来自AD,名称是正确的

你面临同样的问题吗?

非常感谢

using (var de = new DirectoryEntry("LDAP://" + domain))
{
   using (var search = new DirectorySearcher(de))
   {
       search.Filter = "CN=" + userName;
       var results = search.FindAll();
       string temp = results[0].Properties["displayname"][0].ToString();

       if (string.IsNullOrEmpty(temp))
       {
          return string.Empty;
       }
       else
       {
          return temp;
       }
    }
}

2 个答案:

答案 0 :(得分:0)

不确定是否存在问题 - 但我认为您需要告诉您的搜索者您希望加载displayName属性:

using (var de = new DirectoryEntry("LDAP://" + domain))
{
   using (var search = new DirectorySearcher(de))
   {
       search.Filter = "CN=" + userName;
       search.PropertiesToLoad.Add("displayName");  // specify "displayname" to be returned from search

       var results = search.FindAll();

       string temp = results[0].Properties["displayname"][0].ToString();

       if (string.IsNullOrEmpty(temp))
       {
          return string.Empty;
       }
       else
       {
          return temp;
       }
    }
}

答案 1 :(得分:0)

不要使用“ Centrify DirectControl ”自动将UNIX用户和组配置到Microsoft Active Directory中。

此工具使用简单对象模型来管理用户,组,计算机和区域以及UNIX NIS服务的特定于UNIX的属性。

据我所知,它使用Active-Directory属性来注册一些特殊信息。

UserVersion映射到displayName

UserVersion确定用户配置文件对象与Centrify DirectControl管理员控制台之间的兼容性。此属性的唯一有效值是 $ CimsUserVersion2

例如:

displayName:$ CimsUserVersion2