从Active Directory中获取已启用的帐户

Mou*_*ani 8 c# directoryservices active-directory account-management

System.DirectoryServices.AccountManagement.dll用来处理Active Directory以获取"域用户"组中的所有用户.

这将返回域中的所有用户,但我需要获取已启用的用户.

以下是一些示例代码:

List<string> users = new List<string>();

PrincipalContext pcContext = GetPrincipalContext();

GroupPrincipal grp = GroupPrincipal.FindByIdentity(pcContext,
                               IdentityType.Name,
                               "Domain Users");

foreach (Principal user in grp.GetMembers(true).OfType<UserPrincipal>())
{
    if (user.Enabled != false)
    {
        users.Add(user.Name);
    }
}
Run Code Online (Sandbox Code Playgroud)

其他组工作正常,但当该组是"域用户"时,该Enabled属性的值false适用于所有用户.这使得无法在不对每个用户进行进一步查询的情况下区分启用和禁用用户.

Joe*_*ini 1

UserPrinciple 对象为此有一个 bool Enabled 属性。

http://msdn.microsoft.com/en-us/library/system.directoryservices.accountmanagement.userprincipal_properties.aspx

// Add this to GetUserDetails
objUserDetails.EmployeeId = UserPrinical.EmployeeId;


// Then condition the add to only add enabled
if (objUserDetails.Enabled) {
    objUserDetails.Add(GetUserDetails(p.Name));
}
Run Code Online (Sandbox Code Playgroud)