我使用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;
}
}
}
答案 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