2011-08-23 75 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