1. 程式人生 > >JAVA移動MS ADUser到指定OU

JAVA移動MS ADUser到指定OU

java 移動 ms aduser 到指定ou

JAVA移動MSADUser到指定OU

近期做OA系統自動化,所以應用到了一些開發,前面文章我們介紹了使用JAVA創建MS ADUser、修改密碼等,但是創建後,我們還有離職相關的自動化,我們對用戶離職操作為先是禁用用戶,然後移動到指定OU下,然後通過powershell或者vbs腳本每個月執行一次刪除,而不是對於離職用戶賬戶直接刪除操作,所以我們對於上面的需求,需要做兩步驟,首先是禁用,對於禁用用戶我們一般是修改用戶的useracountcontrol屬性來操作的,我們將會在下一篇文章中介紹AD用戶的屬性。今天我們主要演示使用JAVA程序移動用戶到指定OU 中。

我們環境中oadi這個用戶在IXM Adm OU下,我們需要將移動到IXM Users OU下

技術分享

配置JAVA相關代理

/**
 * moveuser.java
 * 5 July 2001
 * Sample JNDI application to move an object in the Active Directory.
 * 
 */

import java.util.Hashtable;
import javax.naming.*;
import javax.naming.ldap.*;
import javax.naming.directory.*;

public class moveuser     {
     public static void main (String[] args)     {
     
          Hashtable env = new Hashtable();
          String adminName = "CN=Administrator,cn=Users,DC=ixmsoft,DC=com";
          String adminPassword = "123"; 
          String oldUserpath = "CN=aodi,OU=IXM Adm,OU=IMXSOFT Users,DC=ixmsoft,DC=com";
          String newUserpath = "CN=aodi,OU=IXM Users,OU=IMXSOFT Users,DC=ixmsoft,DC=com";
          String ldapURL = "ldap://192.168.5.20:389";
          
          env.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.ldap.LdapCtxFactory");
     
          //set security credentials, note using simple cleartext authentication
          env.put(Context.SECURITY_AUTHENTICATION,"simple");
          env.put(Context.SECURITY_PRINCIPAL,adminName);
          env.put(Context.SECURITY_CREDENTIALS,adminPassword);
                    
          //connect to my domain controller
          env.put(Context.PROVIDER_URL,ldapURL);
                    
          try {

               // Create the initial directory context
               LdapContext ctx = new InitialLdapContext(env,null);

               // Move the user
               ctx.rename(oldUserpath,newUserpath);

               System.out.println("Moved user");
               
               ctx.close();

          } 
          catch (NamingException e) {
               System.err.println("Problem moving object: " + e);
          }

     }
}

我們定義新、舊用戶路勁

技術分享

開始執行

技術分享

執行成功

技術分享

我們查看AD信息

技術分享

我們最後為了方便可以將userpath的CN用戶值定義成變量,方便傳值

/**
 * moveuser.java
 * 5 July 2001
 * Sample JNDI application to move an object in the Active Directory.
 * 
 */

import java.util.Hashtable;
import javax.naming.*;
import javax.naming.ldap.*;
import javax.naming.directory.*;

public class moveuser     {
     public static void main (String[] args)     {
     
          Hashtable env = new Hashtable();
          String ADAccount="aodi";
          String adminName = "CN=Administrator,cn=Users,DC=ixmsoft,DC=com";
          String adminPassword = "123"; 
          String oldUserpath = "CN="+ADAccount+","+"OU=IXM Adm,OU=IMXSOFT Users,DC=ixmsoft,DC=com";
          String newUserpath = "CN="+ADAccount+","+"OU=IXM Users,OU=IMXSOFT Users,DC=ixmsoft,DC=com";
          String ldapURL = "ldap://192.168.5.20:389";
          
          env.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.ldap.LdapCtxFactory");
     
          //set security credentials, note using simple cleartext authentication
          env.put(Context.SECURITY_AUTHENTICATION,"simple");
          env.put(Context.SECURITY_PRINCIPAL,adminName);
          env.put(Context.SECURITY_CREDENTIALS,adminPassword);
                    
          //connect to my domain controller
          env.put(Context.PROVIDER_URL,ldapURL);
                    
          try {

               // Create the initial directory context
               LdapContext ctx = new InitialLdapContext(env,null);

               // Move the user
               ctx.rename(oldUserpath,newUserpath);

               System.out.println("Moved user:"+ADAccount);
               System.out.println("NewUserpath:"+newUserpath);
               ctx.close();

          } 
          catch (NamingException e) {
               System.err.println("Problem moving object: " + e);
          }

     }
}

技術分享

本文出自 “高文龍” 博客,謝絕轉載!

JAVA移動MS ADUser到指定OU