批量移动AD用户到指定OU

摘要:
为什么我们是MVP?让我们言归正传,看看如何批量实现移动用户?现在,您应该知道查询的DN值实际上是AD用户当前组织单位的OU信息。此外,OU调整后,还可以根据文章“批量修改AD帐户和属性”中的方法批量调整AD用户属性。

原文链接: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的姓名不具有唯一性。

clip_image002

2、AD中用户信息导出

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

clip_image004

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

执行语句:

cscript C:exportUserProfile.vbs

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

clip_image006

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

clip_image007

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比对匹配完成后的结果如下:

clip_image009

注:

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

局部放大截图:

clip_image011

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

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

clip_image013

4、执行批量移动OU

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

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

clip_image015

执行语句:

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,方便查询命令执行结果及排错

命令执行结果:

clip_image017

查看输出log文件:

clip_image019

ADUC中查看被移动的用户:

clip_image021

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

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

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

免责声明:文章转载自《批量移动AD用户到指定OU》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇ios 开发之 各种数据类型之间转换 (持续补充)sql实现查询某个字段在哪个表里 及结构是什么下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

Java 并发系列之十:java 并发框架(2个)

108maximumPoolSize109线程池中允许的最大线程数。线程池的阻塞队列满了之后,如果还有任务提交,如果当前的线程数小于maximumPoolSize,则会新建线程来执行任务。线程的创建和销毁是需要代价的。121threadFactory122用于设置创建线程的工厂。所谓拒绝策略,是指将任务添加到线程池中时,线程池拒绝该任务所采取的相应策略。...

ubuntu中VNC的安装配置笔记

设置密码并首次启动vncserver后。vnc/directory将在用户的主目录中生成。注意:安装后,用户的主目录中没有vnc目录。这是因为默认情况下启用了桌面配置,并且需要修改配置文件。后来,我在网上找到了一篇可靠的文章:http://blog.csdn.net/njchenyi/article/details/8489689本文中描述的配置方法确实可行...

如何下载Chrome离线版EXE安装文件和MSI版安装文件

对于Chrome的稳定版本(官方版本),您只需添加“?”在Chrome的“最终用户许可协议”页面上的链接之后?Standalone=1对于Beta版和开发版Chrome,只需记住以下地址:http://dl.google.com/chrome/install/{versionnumber}/crome_安装程序中的版本号。exe表示要下载的Chrome版本号...

RPi 树莓派 DSI 接口研究 MIPI raspberry pi

我已经玩树莓派很久了。我发现尚未使用DSI显示界面。经过一些研究,我发现它很有趣。我稍后会记录相关信息。(更新1:目前,整个网络上有很多方案来研究hdmi和mipi之间的相互转换方案:a.)mipi屏幕+hdmi界面:大多数都是因为有很多mipi屏幕和漂亮的参数而被研究的。详细信息:谷歌,得益于包括智汇在内的各种大神的研发,如Pocket LCD方案。最困难...

Nacos开机自启

1.加入玉米片。服务文件vi/lib/systemd/system/nacos.service2.将以下内容写入nacos。服务文件ps:我的nacos路径是/usr/local/nacos[Unit]Description=nacosAfter=network。target[Service]Type=forkingExecStart=/usr/local/...

获取用户当前位置信息的两种方法——H5、微信

在之前调用百度地图API的总结中,我使用H5获取了当前位置信息。事实上,微信还提供了一种获取用户地理位置的方法。现在我们将发布这两种方法,并根据情况选择使用它们。varspeed=响应。速度;//速度,单位:米/秒varaccuracy=res精度;//位置精度}});3、 从地理位置和地图显示中获得的经度和纬度可以使用百度地图或高德地图显示,也可以在微信内...