2011-08-23 47 views
2

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

但我们得到了近100用户的显示名称是‘$ CimsUserVersion2’,这真是一个奇怪的结果,我在Outlook中检查这也从AD同步显示名称,该名称是正确的

具有u面临着同样的问题?

非常感谢

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; 
     } 
    } 
} 

回答

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; 
     } 
    } 
} 
+0

感谢您的答复,100K的用户得到了他们正确的显示名称,只有少数是奇怪值-looks它不是一个代码级别的问题 –

0

唐您是否通过“Centrify DirectControl”将UNIX用户和组自动配置到Microsoft Active Directory中。

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

据我了解,它使用活动目录属性来注册一些特殊的信息。

UserVersion是地图displayName

UserVersion确定用户简档对象和Centrify公司的DirectControl管理员控制台之间的兼容性。该属性的唯一有效值是$ CimsUserVersion2

例如:

显示名:$ CimsUserVersion2

+0

谢谢 - 显示名是属性我想从AD获得,在我们的展望中,我们可以看到这个奇怪的用户有正确的显示名称,例如Gary Wang,但是当我使用.net方法时,它返回$ CimsUserVersion2,奇怪的是大部分用户是它好的,对于那些100个用户,对于我们的AD或.net问题是否存在问题? –

+0

请加里,看看你的AD与LDP.EXE,或ADSIEDIT.MSC并验证'displayName'属性的100个用户之一。我很确定这个属性确实包含值$ CimsUserVersion2。 – JPBlanc