当前位置: 首页 > 面试题库 >

使用Java查找简单的Active Directory信息

时修贤
2023-03-14
问题内容

这是我的第一篇文章,请保持温柔。

我最近开始在工作中使用Powershell来更改广告组,查找广告信息等。但是我缺少我非常喜欢Java的GUI。

有没有一种简单的方法(或代码示例),可用来输入目标主机名并返回要求的详细信息。广告memberhsip组,帐户信息等?

我对Java的了解不如对Powershell的了解,因此会尽可能多地提供帮助。

谢谢


问题答案:

如果您正在寻找完整的Java GUI来查询Active-Directory,则可以看看Apache Directory
Studio

如果您只想使用Java查询AD,下面是一个示例代码:

class TestAD 
{ 
  static DirContext ldapContext; 
  public static void main (String[] args) throws NamingException 
  { 
    try 
    { 
      System.out.println("Début du test Active Directory");

      Hashtable<String, String> ldapEnv = new Hashtable<String, String>(11); 
      ldapEnv.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory"); 
      //ldapEnv.put(Context.PROVIDER_URL,  "ldap://societe.fr:389"); 
      ldapEnv.put(Context.PROVIDER_URL,  "ldap://dom.fr:389"); 
      ldapEnv.put(Context.SECURITY_AUTHENTICATION, "simple"); 
      //ldapEnv.put(Context.SECURITY_PRINCIPAL, "cn=administrateur,cn=users,dc=societe,dc=fr"); 
      ldapEnv.put(Context.SECURITY_PRINCIPAL, "cn=jean paul blanc,ou=MonOu,dc=dom,dc=fr"); 
      ldapEnv.put(Context.SECURITY_CREDENTIALS, "pwd"); 
      //ldapEnv.put(Context.SECURITY_PROTOCOL, "ssl"); 
      //ldapEnv.put(Context.SECURITY_PROTOCOL, "simple"); 
      ldapContext = new InitialDirContext(ldapEnv);

      // Create the search controls          
      SearchControls searchCtls = new SearchControls();

      //Specify the attributes to return 
      String returnedAtts[]={"sn","givenName", "samAccountName"}; 
      searchCtls.setReturningAttributes(returnedAtts);

      //Specify the search scope 
      searchCtls.setSearchScope(SearchControls.SUBTREE_SCOPE);

      //specify the LDAP search filter 
      String searchFilter = "(&(objectClass=user))";

      //Specify the Base for the search 
      String searchBase = "dc=dom,dc=fr"; 
      //initialize counter to total the results 
      int totalResults = 0;

      // Search for objects using the filter 
      NamingEnumeration<SearchResult> answer = ldapContext.search(searchBase, searchFilter, searchCtls);

      //Loop through the search results 
      while (answer.hasMoreElements()) 
      { 
        SearchResult sr = (SearchResult)answer.next();

        totalResults++;

        System.out.println(">>>" + sr.getName()); 
        Attributes attrs = sr.getAttributes(); 
        System.out.println(">>>>>>" + attrs.get("samAccountName")); 
      }

      System.out.println("Total results: " + totalResults); 
      ldapContext.close(); 
    } 
    catch (Exception e) 
    { 
      System.out.println(" Search error: " + e); 
      e.printStackTrace(); 
      System.exit(-1); 
    } 
  } 
}


 类似资料:
  • 我正在尝试基于整数数组制作一个简单的LookUptable,其想法是在编译时计算它。 为了使它能够用于我将来可能拥有的任何其他各种整数类型的表,我需要它作为一个模板。 所以我有一个查找表 我试图在一个类中使用它来快速衰减整数信号,以整数距离。 例如。这只是Foo. h的示例用法 我尝试过几种方法,使用CppCon 2015的youtube视频教程:Scott Schurr“constexpr:Ap

  • 问题内容: 我有带有XML的小字符串,例如: 我想查询以获取其内容。 最简单的方法是什么? 问题答案: 使用Java 1.5及更高版本的XPath,无外部依赖项:

  • 本文向大家介绍Java实现的两种常见简单查找算法示例【快速查找与二分查找】,包括了Java实现的两种常见简单查找算法示例【快速查找与二分查找】的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Java实现的两种常见简单查找算法。分享给大家供大家参考,具体如下: 前言: 查找是指从一批记录当中找出满足制定条件的某一记录的过程。 在平常的程序的编写当中很多时候时用得上的,这里简单介绍两个查找算法

  • 我有一个带有实体图的JPA应用程序,它显示了订单和客户之间的关系。 我有这样一个ItemType实体类: 该类包含一个orderline列表,因为它与orderline实体有一对多的关系。 但是我不确定是应该在实体类中使用NamedQueries从数据库中获取数据,还是应该使用值注释之类的东西来进行计算。

  • 问题内容: 我正在寻找一个简单的Java内存缓存,该内存具有良好的并发性(因此LinkedHashMap不够好),并且可以定期序列化到磁盘。 我需要但很难找到的一个功能是一种“窥视”对象的方法。我的意思是从缓存中检索对象,而不会导致缓存对对象的保留时间超过其应有的保留时间。 更新: 我忽略提到的另一个要求是,我需要能够就地修改缓存的对象(它们包含浮点数组)。 谁能提供任何建议? 问题答案: 自从最

  • 本文向大家介绍Java 实现简单Socket 通信的示例,包括了Java 实现简单Socket 通信的示例的使用技巧和注意事项,需要的朋友参考一下 Java socket 封装了传输层的实现细节,开发人员可以基于 socket 实现应用层。本文介绍了 Java socket 简单用法。 1. 传输层协议 传输层包含了两种协议,分别是 TCP (Transmission Control Protoc