C# 在查找所有用户的过程中,Active Directory不会正确返回所有用户
我正在尝试从Active Directory中的组中获取所有用户。一切都很好,但从349用户到最后,有些东西不起作用。它仍然正确保存SamAccountName,但其他属性为null,但实际上它有值。这个问题的解决方案是什么C# 在查找所有用户的过程中,Active Directory不会正确返回所有用户,c#,active-directory,C#,Active Directory,我正在尝试从Active Directory中的组中获取所有用户。一切都很好,但从349用户到最后,有些东西不起作用。它仍然正确保存SamAccountName,但其他属性为null,但实际上它有值。这个问题的解决方案是什么 PrincipalContext ADDomain = new PrincipalContext(ContextType.Domain, daneAD.kontroler, AD.editDomena(daneAD.domena), daneAD.user, daneAD.
PrincipalContext ADDomain = new PrincipalContext(ContextType.Domain, daneAD.kontroler, AD.editDomena(daneAD.domena), daneAD.user, daneAD.haslo);
UserPrincipal u = new UserPrincipal(ADDomain);
GroupPrincipal group = GroupPrincipal.FindByIdentity(ADDomain, daneAD.grupa);
if (group != null)
{
foreach (Principal p in group.GetMembers())
{
UserPrincipal result = p as UserPrincipal;
if (result != null && result.DisplayName != null)
{
ADoutput user = new ADoutput();
user.username = result.SamAccountName;
user.firstname = result.GivenName;
user.surname = result.Surname;
user.mail = result.EmailAddress;
user.isActive = result.Enabled;
user.department = result.GetProperty("department");
if (result.AccountExpirationDate.HasValue)
{
DateTime expiration = result.AccountExpirationDate.Value.ToLocalTime();
user.lockdate = string.Format("TIMESTAMP '{0}-{1}-{2} {3}:{4}:{5}.{6}'", expiration.Year, expiration.Month, expiration.Day, expiration.Hour, expiration.Minute, expiration.Second, expiration.Millisecond);
}
else
{
user.lockdate = "null::timestamp";
}
// I save user there
}
}
}
旁注:您可以通过使用:user.lockdate=string.FormatTIMESTAMP“{0:yyyy-M-dd HH:mm:ss.fff}”来简化代码;更简单的是:lockdate=expiration.ToStringyyyy-M-dd HH:mm:ss.fff;至于这个问题,很难说没有数据访问权限,但可能是一个组中有一个组,或者您作为用户运行时无法访问某些帐户?嗯,但是可以正确地只返回SamAccountName?我想知道为什么问题只出现在最后创建的用户身上。我还尝试了GetMemberstrue。也许可以尝试直接连接到一个受影响的用户,看看它是否有效。您可以首先从组中收集用户LDAP路径列表,然后循环遍历这些路径并绑定到每个用户。