原文链接:http://blog.51cto.com/shubao/1346469

作为域管理员,在日常工作中使用ADUC(AD用户和计算机)工具在图形界面中进行账号管理操作可谓是家常便饭了。然而一个个增加、移动、删除用户,这样操作有时真的够烦,当管理大批量的账户时,重复操作浪费的时间会很多很对。记得在前两年写过几篇关于如何批量创建组织单位OU、AD域用户账户、邮件通讯组以及启用用户Exchange邮箱的文章,这些特别适用于在企业组织环境中白手起家新建域控、邮件等服务器的IT环境。

而对于企业组织中具有完善的IT基础架构的环境,有时也是需要进行大批量的AD用户操作的,比如AD中基于部门的组织单位OU,当赶上公司组织架构大变动,就需要随之调整,如果一个个手动操作,动辄几千个账户,对于域管理员来说,那将是个很苦逼的重复劳动。。。当然有人会提到整合HR系统和AD系统,这样就不需要重复操作,多次维护了。但是就国内来说,企业信息化建设到这种层度的公司屈指可数啊,并且这种HR系统价格不菲!

拿我所在的公司来说,每年都有组织架构的频繁变动,IT人员除了平时基于HR的信息进行调整外,每年年底还要基于HR信息进行一次彻底的大调整,以满足日常办公中Exchange邮件和Lync通讯簿中呈现出准确的信息。在我到公司之前据说每次调整都是好几个IT人员用花费几周的时间来共同完成。现在俺当然不能再采用这么土鳖的方法来调整了。。。怎么着咱也是MVP啊,O(∩_∩)O哈哈~

下面言归正传吧,来看看如何批量实现移动用户吧?

开始之前还是先要感谢以下两位博主,我这篇文章是在他们基础之上完成的

《一个脚本解决AD用户批量操作问题》

http://lqlaps169.blog.51cto.com/855319/384176

《批量修改AD账户与属性》

http://blog.csdn.net/xuhuojun/article/details/6795648

下面开始具体操作:

1、HR信息获取

前面我们提到,我们的AD架构调整是基于HR的组织架构及人事信息的,所以首先我们会从HR处拿到一张Excel表格,类似下图,包含姓名、公司、部门、邮箱等信息。

其中主要用到一下两项信息:

部门信息 用于我们AD中组织单位OU的划分

邮箱信息 用于和我们AD中的现有用户信息进行匹配

注:之所以不使用姓名是因为涉及到重名,一般来说AD中的姓名和HR的姓名不具有唯一性。

2、AD中用户信息导出

AD中现有用户信息的导出我借鉴的是《批量修改AD账户与属性》一文中的方式,再次感谢作者!http://blog.csdn.net/xuhuojun/article/details/6795648

这是一个vbs脚本,执行后会导出ad中用户的N多属性值,这里我们用不着这么多的属性值,所以对脚本稍加修改,只需导出显示名、邮箱、sAMAccount、DN(distinguishedName)等信息。

执行语句:

cscript C:\exportUserProfile.vbs

注:在64位的Windows Server 2008 R2环境下,需要以管理员权限打开cmd,并进入C:\Windows\SysWOW64\ 目录;命令执行计算机上还需要安装Excel 应用程序;

脚本执行完成后会输出结果到c:\temp\MyExport.xls

3、信息比对及匹配

接下来要做的就是将HR的Excel表格和我们导出的Excel表格(MyExport.xls)信息进行比对及匹配。

我们能够看到HR的Excel表格和导出的Excel表格具有相同的mail邮箱这一列,下面我们要使用Excel强大的VLOOKUP函数,用HR的Excel表格中mail信息去我们导出的Excel表格(MyExport.xls)中查询出对应的DN(distinguishedName)值,并填充到HR的Excel表格中。

DN(distinguishedName)值就是我们后面进行批量操作的关键

关于VLOOKUP函数可以参考下面链接,或者直接Google或者百度一下

http://office.microsoft.com/zh-cn/excel-help/vlookup-HP005209335.aspx

VLOOKUP比对匹配完成后的结果如下:

注:

“#N/A” 表示两张Excel表格中的数据没有相同的,一般是HR提供的邮箱错误或者和我们AD中的邮箱不一致导致的,这种一般我们可以根据其他信息手动查询出正确的DN值并补全。

局部放大截图:

完成后复制表格DN(distinguishedName)值列,并保存为txt文本文件。这里我们保存至D:\user.txt中。

到这里大家应该看明白了,查询到的DN(distinguishedName)值其实就是AD用户现在所在的组织单位OU信息。

4、执行批量移动OU

这里我借鉴的是《一个脚本解决AD用户批量操作问题》一文中的方式,再次感谢作者!

http://lqlaps169.blog.51cto.com/855319/384176

执行语句:

for /f %i in (d:\user.txt) do dsmove %i -newparent ou=xxx,ou=xxx,dc=xxx,dc=com >>d:\log.txt

for的作用就是从user.txt中获取目标信息

Dsmove –newparent 指定对象应移动到的新位置的 DN值

>>d:\log.txt 将命令执行结果输出到d:\log.txt,方便查询命令执行结果及排错

命令执行结果:

查看输出log文件:

ADUC中查看被移动的用户:

这样我们就完成了AD用户的批量移动OU操作。在这里提醒大家,这种操作毕竟涉及线上生产环境,所以尽量按照部门分批次移动操作,并且做好在非工作时间进行。

其实用户组织单位OU的调整只是第一步,接下来还需要进行部门通讯组及成员调整,不过这个完全可以由邮箱地址直接批量添加,简单方便很多。

另外调整OU后,AD用户属性(如:公司、部门、经理等等)的调整也可以按照文章《批量修改AD账户与属性》的方法来批量操作完成。这里就不在重复了

批量移动AD用户到指定OU的更多相关文章

  1. 通过脚本批量添加AD用户

    1.新建一个csv文件(逗号分隔的一种值文件) 内容为:放在C:\盘根目录下 test300 test300 .com test300 test301 test301 .com test301 tes ...

  2. 【转】dsadd user批量创建AD用户命令详解

    常见的批量创建用户的方法有四种: 一. 帐户模板的方式 二. CSVDE和LDIFDE 三. 脚本的方式 四. DSADD 但是很少有详细的资料使用DSADD的方式来批量创建帐户,那么我就把我近期使用 ...

  3. Windows Server 2016-命令行批量导出AD用户列表信息

    本章节为大家带来如何通过Powershell或ldifde命令行方式导出域用户列表信息,方便大家日常运维工作中使用. Powershell方式导出现有Staff目录下所有用户信息列表: Get-ADU ...

  4. PowerShell命令批量添加、导出AD用户

    导入单个AD用户命令 New-ADUser -Name "周八" -Surname "周" -GivenName "八"-SamAccoun ...

  5. 使用CSVDE批量导入命令/出口AD用户

    使用CSVDE批量导入命令/出口AD用户         CSVDE命令行工具可以与真实的用户信息CSV文件.批量导入/出口AD在. 导入的基本的语法命令是这种: csvde -i -f c:\fil ...

  6. 根据当前登录域账号 获取AD用户姓名和所在OU目录

    #region 根据当前登录域账号 获取AD用户姓名和所在OU目录 /// <summary> /// 根据当前登录域账号 获取AD用户姓名和所在OU目录 返回域用户是否存在 /// &l ...

  7. win2008r2 AD用户账户的批量导入方法

    win2008r2 AD用户账户的批量导入方法 http://www.jb51.net/article/38423.htm

  8. AD用户登录验证,遍历OU(LDAP)

    先安装python-ldap模块 1.验证AD用户登录是否成功 import sqlite3,ldap domainname='cmr\\' username='zhangsan' ldapuser ...

  9. ASP.NET MVC 操作AD 获取域服务器当前用户姓名和OU信息

    #region 根据当前登录域账号 获取AD用户姓名和所在OU目录 /// <summary> /// 根据当前登录域账号 获取AD用户姓名和所在OU目录 /// </summary ...

随机推荐

  1. leetcode python 006

    ##  改为z型字符串def change_to_z(s,n):    ## 字符串不能生成完整的区,用空格补全    b=len(s)%(2*n-2)    if b!=0:        s+=' ...

  2. java中求余%与取模floorMod的区别

    初学java的时候接触的%这个符号 百分号? 求余? 取模? 我只知道不是百分号,好像是求余,听别人那叫求模运算符,跟求余一样,于是我便信了. 思考之后开始迷糊,然后经过多次考证得到以下结论. 首先, ...

  3. SQL JOIN语法,以及JOIN where 和and区别,还有where和join效率问题。

    语法 join 用于根据两个或多个表中的列之间的关系,从这些表中查询数据. Join 和 Key 有时为了得到完整的结果,我们需要从两个或更多的表中获取结果.我们就需要执行 join. 数据库中的表可 ...

  4. ProtocolBuffer for Objective-C 运行环境配置及使用

    1,我已经安装了brew.pod.protoc,如果您没安装,请按照下面方式安装. 安装很简单,对着README操作一遍即可,我贴出自己在终端的命令行.需要输入的命令行依次为:1)打开终端,查看mac ...

  5. 使用ssh免密登录

    在开发中经常会遇到远程登录服务器,要经常输入密码.有时密码太复杂记不住,还需要保存到本地文件中. 可以使用ssh命令,配置密钥登录,这样就不需要输入密码,一劳永逸,何乐而不为 ^--^ 配置密钥只需要 ...

  6. echarts移除百度地图logo方法

    移除百度地图LOGO和版权信息 在jsp头上加上如下代码即可: <style type="text/css"> .anchorBL{ display:none } &l ...

  7. 使外部主机可访问Django服务

    欲让外部主机可访问Django的服务器,需使用如下命令开启服务 python manage.py runserver 0.0.0.0:8000

  8. Android引入动态库so的方法

    Android引入动态库so的方法 标签(空格分隔): Android so 第三方库 为了执行效率,会将一些CPU密集性任务如音视频解码.图像处理等放入到so中,还有也会将程序关键核心部分放入到so ...

  9. Linux Capability探索实验

    Linux内核从2.1版本开始,就开始支持Capabilities的安全机制.Capabilities安全机制提出的目的在于实现系统特权操作的更加细粒度的访问控制,使用户能够根据实际的安全需求来控制r ...

  10. 2.5 Visio2007不规则图形填充

    1.确保线和线接口的地方正好相交,没有多出来的线: 2.将图形选中>组合: 3.选中图形>形状>操作>连接>填充颜色. 因为图形式几条线段拼合的,不是封闭图形,所以需要将 ...