2017-06-19 78 views
0

我试图通过用他们的电子邮件地址搜索并检查Enabled属性来查找用户是否具有Active Directory帐户(如果我将Enabled作为true - run代码返回,if我返回false - 运行其他代码,如果结果为空 - 返回false,因为该电子邮件不再存在)。当我到达foreach循环时,它发现用户根据他们的电子邮件的结果,但用if和else检查返回用户为NULL。查找Active Directory是否通过电子邮件启用/禁用

public static bool DoesUserExist(string email, string domain) 
    { 
     var found = false; 

     using (PrincipalContext domainContext = new PrincipalContext(ContextType.Domain, domain)) 
     { 
      UserPrincipal user = new UserPrincipal(domainContext); 
      user.EmailAddress = email; 

      PrincipalSearcher search = new PrincipalSearcher(user); 
      search.QueryFilter = user; 

      PrincipalSearchResult<Principal> results = search.FindAll(); 

      foreach (Principal result in results) 
      { 
       if (user.Enabled == true) 
       { 
        found = false; 
        Helpers.LogMessage("Active Directory Account is Enabled in " + domain + " domain"); 
       } 
       else if (user.Enabled == false) 
       { 
        found = true; 
        Helpers.LogMessage("Active Directory User Account is Disabled in " + domain + " domain"); 
       } 
       else if (user.Enabled == null) 
       { 
        found = true; 
        Helpers.LogMessage("No Active Directory Account Found in " + domain + " domain"); 
       } 
      } 

      return found; 
     } 
    } 

如果在foreach中启用或禁用用户,我缺少什么能够访问?

回答

1

你的问题是用户与你的搜索结果或循环无关;它只是搜索的模板。另请注意,如果未找到结果,则不会进入循环(results将为空),因此对null进行测试是没有意义的。另外,您的found设置似乎是错误的。

if (!results.Any()) 
    Helpers.LogMessage("No Active Directory Account Found in " + domain + " domain"); 
else { 
    var found = false; 

    foreach (UserPrincipal result in results) { 
     found = !result.Enabled; 
     if (found) 
      Helpers.LogMessage("Active Directory User Account is Disabled in " + domain + " domain"); 
     else 
      Helpers.LogMessage("Active Directory Account is Enabled in " + domain + " domain"); 
    } 
} 
+0

你说得对,需要使用UserPrincipal而不是只需要Principal!我现在能够真正检查用户,谢谢!而“发现”实际上处于正确的位置;如果你看到它返回的代码,它会更有意义。 – bubbajake00

+0

除了我不相信'result.Enabled'可能为空吗? – NetMage

+0

对不起,我的意思是它需要在if和else中设置。你已经走到了这一步之外,但仍然是这样。 – bubbajake00

相关问题