使用脚本自动创建AD中的层次化结构容器及对象

简介:
新年伊始,万象更新。借用在年终总结里的第一句话。2009年了,继续更新BLOG。今年初准备更新2个大主题,1是WINSERVER相关的一些东西,包括2008、应用技巧、部署及各种工具等;2是OCS2007从规划到部署的系列文档,BLOG中已经更新过一些零散的文章,准备将OCS相关写全,整理出一套完整的配置文档。2月份要发布R2版本了,希望对大家有帮助。
     不知各位博友在部署AD用户、组和OU时采用哪种形式。比较常见的是使用Csvde和Ldifde工具以及脚本生成。但是通过工作中的实际应用发现他们或多或少都存在一些问题。使用命令行工具修改脚本繁琐,功能上有限制以及不能创建OU和组;而使用普通的脚本很难满足要求,自己编写又对使用者的编程技巧有较高要求。
     那有没有一种方法可以解决上面这些问题呢?
     这就是今天BOLG的内容,整个过程只使用DSADD命令以及一个循环语句,使用者可以通过简单的修改完成包括创建组织单元、分组、账户、设定账户密码、增加账户信息等工作。最近给一个2000多人用户的机构创建用户效果很好,而且使用这个方法还有一个好处,创建过程中可以标示组织中重名的用户账户。要知道在AD中不止每个用户的SID是唯一的,账户的登陆名也是唯一。一个实际的经验是,200人以上的AD账户重名几率会呈几何形状增长。2000人大概有150个账户会发生冲突。
     在介绍最终的脚本以前先简单介绍一下Dsadd命令,这个命令是windows2003及2008中自带的系统工具,所以使用时不需要安装SK和RK之类的工具集即可使用,除了Dsadd以外DS还包括其他一些列命令如,Dsget dsmov dsmod dsquery等命令。我会另写文章介绍
1.第一个例子,最简单的应用,创建单个OU,在AD中对象都存在某个容器或者对象中。在创建AD层级结构时我们也是先创建OU然后再向OU中添加账户
1
说明:添加OU ITpro,我们可以根据需要创建嵌套的多层OU
 
2.第二个例子,创建单个组,方便以后使用脚本直接将用户加到组里,所以这个也要先创建出来
2
说明:创建ITPro用户组
 
3.第三个例子,创建单个用户,upn为90375
3
 
4.第四个例子,通过上面3个例子各位博友已经大概了解了DSADD命令的使用,在这个例子里我加入了一些
开关,定义一些状态和信息,大家可以可以根据需要增加账户部门等信息
4
说明:创建dongjun用户 显示名为董君 密码为password01! 首次登陆必须修改密码并自动加入ITPro组
一些常见的开关大家可以使用-?参数或者搜索一下其他文章介绍,甚至可以通过ADSIEDIT工具查看
9
 
AD用户和计算机中刚刚添加的对象 5
 
5.批量添加用户
       通过上面的介绍,大家可以发现,这是命令的使用还是非常简单的,那如何才能达到自动创建所有用户和组织结构的目标呢?在这里我们还需要借助一个for循环已经tokens参数,下面是脚本内容:
 
6
说明:第一部分前2行不介绍了,大家可以直接看下张效果图;第3,4行创建一个名称为IT的OU并在其中嵌套创建ITPro子OU;第4行在ITPro这个OU中创建ITPro用户组。
            第二部分前2行不做介绍,看下图。最后的命令使用tokens将ITPro.txt中每一行中的第一个和第二个字符传递给for语句进行处理,第一个字符及第二个字符之间用,隔开
dong1 董一
dong2 董二
dong3 董三
dong4 董四
dong1 董一
 
命令处理过程,因为有重名,所以可以看到报错提示
7
 
处理后ADUC中的结果~
8









本文转自 90375 51CTO博客,原文链接:http://blog.51cto.com/dong8745/126487,如需转载请自行联系原作者
目录
相关文章
|
存储 C++ 容器
高维结构投影系列(一):波函数与弦:万象的压缩容器
波函数与弦理论看似分属不同领域,实则揭示同一宇宙奥秘:用极简结构承载无限可能。波函数展现态空间的概率压缩,弦振动呈现粒子谱的展开选择。二者皆为高维结构的投影机制——一个映射态空间,一个映射谱空间。现实并非粒子碰撞,而是结构压缩与展开的选定分支。宇宙或是一套“压缩—展开”系统,现实只是可能性之海中被观测选中的片段。
610 0
|
C++ 容器
【C++航海王:追寻罗杰的编程之路】关联式容器的底层结构——AVL树
【C++航海王:追寻罗杰的编程之路】关联式容器的底层结构——AVL树
301 5
|
监控 Ubuntu Docker
如何在Docker容器启动时自动运行脚本
【8月更文挑战第13天】在Docker容器启动时自动运行脚本可通过以下方式实现:1) 使用`ENTRYPOINT`或`CMD`指令在Dockerfile中直接指定启动脚本,如`ENTRYPOINT ["/startup.sh"]`;2) 启动容器时通过`--entrypoint`参数指定脚本路径;3) 利用supervisor等进程管理工具自动启动与监控脚本,确保其稳定运行。确保脚本具有执行权限并正确设置依赖资源路径。
4105 1
|
关系型数据库 C++ 容器
【C++航海王:追寻罗杰的编程之路】关联式容器的底层结构——红黑树
【C++航海王:追寻罗杰的编程之路】关联式容器的底层结构——红黑树
268 0
|
JavaScript Shell Docker
|
Linux Docker 容器
蓝易云 - 【Linux】如何在linux系统重启或启动时执行命令或脚本(也支持docker容器内部)
以上就是在Linux系统和Docker容器中设置启动时运行命令或脚本的方法。希望对你有所帮助。
636 0
|
文件存储 Docker Python
记录一次 nas docker 运行出错 使用Python脚本检查错误并重启对应容器 npc 运行出错 导致无法连接
记录一次 nas docker 运行出错 使用Python脚本检查错误并重启对应容器 npc 运行出错 导致无法连接
372 1
|
Kubernetes Shell Docker
容器服务ACK常见问题之容器服务ACK kubectl命令写到shell脚本失败如何解决
容器服务ACK(阿里云容器服务 Kubernetes 版)是阿里云提供的一种托管式Kubernetes服务,帮助用户轻松使用Kubernetes进行应用部署、管理和扩展。本汇总收集了容器服务ACK使用中的常见问题及答案,包括集群管理、应用部署、服务访问、网络配置、存储使用、安全保障等方面,旨在帮助用户快速解决使用过程中遇到的难题,提升容器管理和运维效率。
|
索引 Python 容器
Python容器专题 - deque(队列)--双向队列对象
Python容器专题 - deque(队列)--双向队列对象
564 0
|
XML Java 数据格式
面试题:在spring框架下,创建容器对象的方式有哪些?你做项目的时候,会考虑哪种?
面试题:在spring框架下,创建容器对象的方式有哪些?你做项目的时候,会考虑哪种?
216 0