利用脚本批量添加域用户账户
AD域管理操作指引:批量导入域账号
AD域管理操作指引:批量导⼊域账号海格物流AD项⽬:操作指引批量导⼊域账号安全警告1、将事先制作好的⽤户账号⽂件Adduser.csv⽂件复制到DC(ad1.hg.local)的C盘根⽬录下,以管理员⾝份运⾏CMD窗⼝。
将脚本粘贴到CMD窗⼝中,回车运⾏。
2、脚本调⽤Adduser.csv⽂件,批量导⼊⽤户3、批量导⼊的域账号默认情况下为禁⽤状态,需管理员⼿⼯启⽤账户4、⽤户⾸次使⽤域账号登录计算机时,强制⽤户更改密码For Do脚本参考:for /f "skip=1 eol=; tokens=1-10 delims=," %a in (c:\addusers.csv) do dsadd user cn=%a,ou=hg,dc=hg,dc=local -upn%****************%b-pwd%c-dept%d-display%a-title%e-mustchpwdyes-disabledyes域⽤户批量导⼊脚本for do:1、使⽤for do命令批量导⼊域⽤户时,需要⾸先将⽤户名及所需导⼊的各项属性做成Excel ⽂档,并保存为.csv的⽂件格式,参考如下2、编辑for do脚本,使之能匹配.csv⽂档⾥的各项属性for /f "skip=1 eol=; tokens=1-10 delims=," %a in (c:\addusers.csv) do dsadd user cn=%a,ou=hg,dc=hg,dc=local -upn%****************%b-pwd%c-dept%d-display%a-title%e-mustchpwdyes-disabledyes可参考以下参数进⾏导⼊属性的删减:(b%代表命令调⽤⽂件中的第b列数据,依次类推)((c:\addusers.csv)表⽰脚本调⽤的⽂件的具体路径)名称 cn=a%对象存放位置 ou=hg,dc=hg,dc.local⽤户登录名–upn%**********账号–samid=b%密码–pwd显⽰名–display公司 -company部门–dept职位 -title办公室 -office分机 -tel传真 -fax⼿机 -mobile电⼦邮件–email请按照以上⽅式添加和删除相应的账号附件属性。
批量添加域用户操作实战
批量添加域用户操作实战一、 AD用户复制1、在“AD域和计算机”中建一个作为样板的用户,如S1。
2、设置相关需要的选项,如所属的用户组、登录时间、用户下次登录时需更改密码等。
3、在S1上/右键/复制,输入名字和口令。
说明:1、只有AD域用户才可以复制,对于本地用户无此功能。
2、复制可将在样板用户设置的大多数属性带过来。
具体如下:二、比较csvde与ldifdecsvde: 逗号分隔符目录交换工具允许您使用 CSV 源文件将新对象导入到 Active Directory 中;此外,该工具还提供了将现有对象导出到 CSV 文件的功能。
CSVDE 不能用于修改现有对象;在导入模式下使用此工具时,您只能创建全新的对象。
使用 CSVDE 导出现有对象的列表相当简单。
将 Active Directory 对象导出到名为 ad.csv 的文件,方法如下:csvde –f ad.csv–f 开关表示后面为输出文件的名称。
但是您必须注意,根据环境的不同,此基本语法可能会生成不实用的大型输出文件。
要将此工具限制为仅导出特定组织单位 (OU) 中的对象,可以将语句修改为如下形式:csvde –f UsersOU.csv –d u=Users,dc=contoso,dc=进一步假定您只对将用户对象导出到 CSV 文件感兴趣。
如果是那样的话,您可以添加–r 开关和–l 开关,前者允许指定轻型目录访问协议 (LDAP) 筛选器进行搜索,后者可以限制导出的属性的数量(请注意以下所有容位于一行):csvde –f UsersOnly.csv –d u=Users,dc=contoso,dc= –r"(&(objectcategory=person)(objectclass=user))" –lDN,objectClass,description通过–i 开关,您可以将对象从源 CSV 文件导入到 Active Directory。
批量导入域用户
AD安装完成后,我们都要面对一个棘手的问题,那就是创建用户!!如果一个企业中域的用户有成百上千的放,那么你的工作量可想而知……。
况且让一个人重复同一个操作成百上千次,难免不会出现疲劳而导致出现错误的可能,下面就介绍一种通过命令的方法一次批量添加用户1、首先你需要搞到公司的人员表(这个一般都可以在人事部搞到手),然后对人员表做一下简单的修改,修改后的格式如下,分成五个部分,分别是:姓、名、姓名、用户名、登录密码。
2、下面要做的就是把他保存成 CSV后缀名的文件,在“文件”中选择“另存为”选择CSV 的格式3、然后把文件拷贝到域控的C盘根目录下用记事本打开此文件,可以看到生成如下的格式以下是我的域中OU的情况现在我要用命令批量的把用户添加到名为“员工”的OU里。
4、运行cmd进入命令行模式,先输入以下命令,查看能否正常输入变量for /f "tokens=1,2,3,4,5 delims=," %a in (ul.csv) do @echo %a %b %c %d %e 可以正常显示如下5、接下来我们就要输入完整的命令行来进行批量的用户添加for /f "tokens=1,2,3,4,5 delims=," %a in (person.csv) do dsadd user "cn=%c,ou=员工,dc=myloverxhy,dc=com" -samid %d -upn %d@ -ln %a -fn %b -pwd %e -disabled yes其中ou 对应为你要添加到的OU名两个dc按顺序分别对应你的域名@对应你的后缀Disabled yes定义添加完的用户是禁用的运行命令后结果如下成功添加用户。
接下来我们到OU里查看用户,已经全部出现,并且显示为禁用我们可以选中所有用户,然后右键“启用账户”即可完成。
我们可以测试使用账号在域中登录,是可以完成的。
2. 使用dsadd批量录入域用户
使用dsadd批量录入域用户一.打开业务部员工名单Excel表格:二.将业务部员工名单Excel表格文件另存为csv格式,名称为ADUSER.csv。
选择用“记事本”程序打开csv文件。
从“用户名称”到“电子邮件”是用“,”分隔开的10个字段,可以用“变量a”到“变量j”进行表示。
三.新建文本文件,并编辑命令如下:for /f "skip=1 eol=; tokens=1-10 delims=," %a in (d:\ADUSER.csv) do dsadd user cn=%a,ou=业务部,dc=abc,dc=com -upn %b@ -samid %b -pwd %c -fn %e -ln %d -dept %f -office %g -tel %h -title %i -email %j -mustchpwd yes -canchpwd yes -disabled yes -profile "\\file\profiles\%b" -hmdir\\file\drive\%b\ -hmdrv Z:解释:Skip=1 跳过第一行Eol=;行结束则执行for循环Tokens=1-10 共有10个变量Delims=, 变量之间的分隔符为“,”%a in(e:\ADUSER.csv) 变量a的读取路径为: e:\ADUSER.csvDsadd user 创建一个对象,对象类型为用户Cn=%a 对象的CN(通用名称,也就是对象的名字)为:变量aOu=财务部, dc=abc, dc=com 用户的DN(可辨识名称,也就是在AD中的位置)-upn %b@ 用户登录到域时所使用的登录名称是:变量b@-samid %b 用户在win2000之前的操作系统上登录到域是所使用的登录名称是:变量b -pwd %c 用户登录密码是:变量c-fn %e 用户名:变量e-ln %d 用户姓:变量d-dept %f 用户所属部门:变量f–office %g 用户办公室:变量g-tel %h 用户电话号码:变量h-title %i 用户职务:变量i-email %j 用户电子邮件地址:变量j-mustchpwd yes 用户下次登录是否必须更改密码。
用批处理批量添加域用户
★浏览次数:1,111 次★发布日期:2012年11月30日当前位置: 悟软 > 学习教程 > 文章正文用批处理批量添加域用户文章标签: Office, windows域, word, 域控制器, 局域网, 批处理在局域网中使用windows域的优势有很多,个人感觉域的管理其实不复杂,最麻烦的是新建域是添加用户的过程,几十个用户手工慢慢来添加还好说,如果是上百个的话恐怕就没那么容易了,而且还会出错。
这里介绍一种通过批处理文件批量添加域用户的方法。
一、准备工作1、notepad文本编辑器2、准备一份员工工号和姓名对照的电子版(本例中以员工工号作为登录名)二、操作步骤1、将电子版工号姓名表格整理一下,只留下工号和姓名。
选择工号和姓名这两列复制到一个txt文件中命名为adduser.txt。
2、使用notepad的列选功能将文档中的多余空格删除,让姓名和工号直接只留下一个空格。
3、使用notepad的列选功能将员工的姓和名分别复制出来成为单独的两列。
下图中从左向右分别是将来用户的登陆名、显示名称、姓、名4、接下来这条cmd命令是重点For /F “tokens=1,2,3,4″ %%a in (adduser.txt) do dsadd userCN=%%a,OU=htsc,DC=htsc,DC=zz -upn %%a@htsc.zz -display %%b -ln %%c -fn %%d -pwd %%a -pwdneverexpires yes -acctexpires never -desc %%b其中红色字体部分需要根据环境自行修改先来解释一下命令内容:tokens=1,2,3,4这段是声明这里有4个变量。
分别是%%a,%%b, %%c, %%d。
分别对应txt中登陆名、显示名称、姓、名列。
%%a in (adduser.txt) 这段是表示全部变量的来源。
这里就是指变量都是来源于之前保存当前目录下的txt文件。
AD域管理常见问题
A1、客户机无法加入到域?一、权限问题。
要想把一台计算机加入到域,必须得以这台计算机上的本地管理员(默认为administrator)身份登录,保证对这台计算机有管理控制权限。
普通用户登录进来,更改按钮为灰色不可用。
并按照提示输入一个域用户帐号或域管理员帐号,保证能在域内为这台计算机创建一个计算机帐号。
二、不是说"在域中,默认一个普通的域用户(Authenticated Users)即可加10台计算机到域。
〃吗?这时如何在这台计算机上登录到域呀!显然这位网管误解了这名话的意思,此时计算机尚未加入到域,当然无法登录到域。
也有人有办法,在本地上建了一个与域用户同名同口令的用户,结果可想而知。
这句话的意思是普通的域用户就有能力在域中创建10个新的计算机帐号,但你想把一台计算机加入到域,首先你得对这台计算机的管理权限才行。
再有就是当你加第口台新计算机帐号时,会有出错提示,此时可在组策略中,将帐号复位,或干脆删了再新建一个域用户帐号,如joindomaino注意:域管理员不受10台的限制。
三、用同一个普通域帐户加计算机到域,有时没问题,有时却出现“拒绝访问〃提示。
这个问题的产生是由于AD已有同名计算机帐户,这通常是由于非正常脱离域,计算机帐户没有被自动禁用或手动删除,而普通域帐户无权覆盖而产生的。
解决办法:1>手动在ADxx删除该计算机帐户;2、改用管理员帐户将计算机加入到域;3、在最初预建帐户时就指明可加入域的用户。
四、域XXX不是AD域,或用于域的AD域控制器无法联系上。
在域中,2000及以上客户机主要靠DNS来查找域控制器,获得DC的IP 地址,然后开始进行网络身份验证。
DNS不可用时,也可以利用浏览服务,但会比较慢。
2000以前老版本计算机,不能利用DNS来定位DC,只能利用浏览服务、WINS、Imhosts文件来定位DC。
所以加入域时,为了能找到DC,应首先将客户机TCP/IP配置中所配的DNS服务器,指向DC所用的DNS服务器。
批量创建域用户
批量创建域用户Win Server2008R2批量创建域用户的相关问题。
我在给企业客户进行批量创建域用户的时候,出现了几个问题,还请您协助我解决这些疑惑:我使用的是dsadd命令的方法进行批量创建,运行命令如下:for /f “tokens=1,2,3,4,5,6,7 delims=,” %a in (c:\test.csv) do dsadd user “cn=%b,OU=**,OU=**,OU=**,DC=**,DC=cc” -ln %c -fn %d -samid %e -pwd %f -dept %g -display %i -mustchpwd yes1.客户要求:在批量创建域用户的同时,要实现域用户与自己客户端机器的绑定,实现形式如下图:o请问:这种情况如何使用dsadd命令实现,它的参数设置是什么?2.我使用以上命令批量创建域用户时,然而我发现用户登录名都是空白的,只有用户登录名(Windows 2000以前版本),这种情况会不会造成什么不安问题?我测试了一下,批量创建的用户是正常的,如何使用命令参数添加用户登录名**@**.com,难道是要添加UPN?3.该企业的领导一般都有连个登录名,我们可以同事创建两个登录名给领导,但是两个领导的名字是一样的,基于我的尝试,同一个用户姓名是不能创建域用户的,请问这种情况如何解决,如何使用同一个用户姓名创建两个登录名不同的域用户?这些问题都是我此时遇到的实际问题,还请工程师帮我解决一下,对此深表感谢!回答:从您的描述中,我了解到您在使用dsadd命令进行批量创建域用户时有下列需求。
1.域用户只能登录特定的计算机。
o需求1,很遗憾这个命令无法实现这个功能。
2.指定UPN。
o需求2,这里的“用户登录名”就是UPN,指定UPN可以使用户拥有类似邮箱地址的登录方式,可以根据需求指定。
若需指定,可添加如下的选项+参数组合。
这里的%e与-samid后的变量一致即可。
自动加入域
\dc1\tools\netdom join 127.0.0.1 /domain: /OU:ou=guangzhou,dc=gz,dc=co m /userD:administrator /PasswordD:password /UserO:administrator /PasswordO:p assword /reboot:10在客户端执行这样的脚本,其中dc1是放netdom.exe程序的机器名,tools是共享名,netdom.exe来自windows2000或2003光盘的support\tools./userD:administrator /PasswordD:password 是域账号和密码/UserO:administrator /PasswordO:password 是客户机有管理员权限的用户名和密码Netdom 是一个命令行实用工具,可用于管理Windows 域。
该实用工具包含为Windows NT 4.0 和Windows 2000 域成员创建和移动计算机帐户的选项。
在较低版本的Windows 中,用户和计算机帐户是在Windows 域中的主域控制器(PDC) 上创建的;在进行完整复制之前,远程域控制器上的新帐户不可用。
Netdom 2.0 包含一个join 命令,可用于在任何指定的Windows 2000 域控制器上创建计算机帐户。
Netdom 2.0 使用新的NetJoinDomain API,它与Windows 2000 域控制器上的多主复制配合使用,在域中的任一域控制器上创建安全主体(用户、计算机和组)。
当您在其中创建计算机帐户的域控制器与为其创建帐户的客户端工作站位于同一Active Directory 站点时,您可以减少或消除复制延迟,这种延迟会阻止用户立即登录到域。
此join 命令的语法为:C:\>netdom help joinNETDOM JOIN <计算机>/Domain:<域> [/OU:<组织单位路径>] [/UserD:<用户>][/PasswordD:[<密码> | *]][UserO:<用户>] [/PasswordO:[<密码> | *]][/reboot[:<以秒为单位的时间>]]运行此命令时,会显示以下信息:NETDOM JOIN Joins a workstation or member server to the domain.其中:<计算机> 是要加入域的工作站或成员服务器的名称/Domain 指定计算机要加入的域/UserD 用于与 /Domain 参数指定的域建立连接的用户帐户/PasswordD /UserD 指定的用户帐户的密码。
2008 R2域控批量导入用户
2008 R2 域控下批量导入用户
1.在excel里面编辑好相关用户信息如下图,保存格式为usere3.csv 文件。
2.把usere
3.csv文件放在域控服务器的桌面。
在“运行”里面输入CMD调出dos界面输入下面命令:
for /f "tokens=1,2,3,4,5 delims=," %a in (c:\usere3.csv) do @echo %a %b %c %d %e
3.在域控服务器上“开始”--“管理工具”--“Active Diretory用户和计算机”单击进入。
在上“”右键--“新建”--“组织单位”单击进入输入组织单位名称yatou如下图:(图中test为实例)。
4.在“运行”里面输入CMD调出dos界面输入下面命令:
for /f "tokens=1,2,3,4,5 delims=," %a in (c:\usere3.csv)
do dsadd user "cn=%c,ou=yatou,dc=wowo,dc=huawei,dc=com" -samid %d -upn %d@ -ln %a -fn %b -pwd %e -disabled no
2.txt
如图:
6.在域控服务器上“开始”--“管理工具”--“Active Diretory用户和计算机”单击进入,查看新建的用户。
批量导入导出域(活动目录AD)用户帐户
批量导入/导出域(活动目录/AD)用户帐户在活动目录的管理中会遇到对用户进行批量操作的问题,例如,在升级操作系统时或在刚刚使用活动目录时,管理人员需要批量的添加或删除用户帐户。
批量导入/导出域用户可以使用Windows服务器中的csvde.exe或ldifde命令。
在Windows Server 2003中需要安装Support tools(在Server 2003的安装光盘中)才可以使用这两个命令。
在Windows Server 2008中可以直接在命令行或PowerShell中,通过输入csvde命令或ldifde命令来使用。
使用csvde命令可加添加域用户帐户,但不能使用csvde命令删除或修改域用户帐户,使用笨的方法可以先将数据导出,在修改后然后再导入。
使用ldifde命令可以对一些用户的属性进行修改,或者删除用户。
csvde命令导出的是.csv格式的文件,可以使用Excel很方便的进行查找到替换。
使用ldifde命令导出的是.ldf格式的文件,其也可以使用文本编辑工具(如记事本)打开,然后进行一些简单的替换等工作。
下面我们分别就域用户的批量导入和域用户的批量导出进行讲解。
csvde /? csvde命令的帮助信息ldifde /? ldifde命令的帮助信息在两个命令的命令行帮助信息中可以先了解一下如何使用,其中也有一些关键的信息如:csvde命令的示例:示例: 简单导入当前域csvde -i -f INPUT.CSV示例: 简单导出当前域csvde -f OUTPUT.CSVldifde命令的示例:示例: 简单导入当前域ldifde -i -f INPUT.LDF示例: 简单导出当前域ldifde -f OUTPUT.LDF因个人认为ldfide的命令稍强大一些,所以,以下的批量导入/导出域用户帐户操作以ldife为例:批量导出域用户帐户ldifde -f c:\exportuser.ldf -s 服务器 -d "dc=域,dc=com" -p subtree -r"(&(objectCategory=person)(objectClass=User)(givenname=*))" -l"cn,givenName,objectclass,samAccountName"将上面的这段代码输入到命令行中,回车即可将域中所有的用户帐户信息导出在一个名为exportuser.ldf的文件中。
批量添加AD域用户名
如何实现:1、先从人资部门取得包含员工基础信息的电子文档。
2、将这些基础信息按一定的格式进行编辑,例如转换拼音,截分姓名,添加用户名后缀等,总之,除了解决重名问题外,我们不必进行任何手工录入工作。
3、将编辑好的数据组成一个CSV格式文件,然后用Win2003中的CSVDE命令进行批量导入。
要用到的程序:1. CSVDE.EXE包含在Win2003安装盘中,需用Expand csvde.ex_ csvde.exe将它展开后才能用。
2 .Visual FoxPro,随便什么版本都行,其实就是进行一些简单的字段与记录的操作,其它编程语言都能实现。
3.Office Excel 2003,这个不用说了,只要是电脑就都安装了的。
准备工作:1、首先按总部要求建立“XX分部门店”和“XX分部办公区”组织单元,然后在其下新建相应的职能部门和门店组织单元。
2、为了叙述方便,在D盘新建一个Adwork的目录,将CSVDE拷到里面,在VFP中也把默认目录设为它,反正这次操作时用到的文件全都放到这个目录。
后面的叙述中我们就不特别指明路径了。
3、由于这次建的域用户名分为两大类:门店和办公区,为了简化操作,我们的批量导入工作就分成两次进行,步骤完全一样,只是把门店/办公区的字样互换就行了。
一、建立基础数据这次我们建立帐户所需的基础信息不是很多,如图五所示,一共六个字段,(如果还需要例如家庭电话、登录脚本、远程访问权限等帐户属性,按下面的方法在后面加入相应列就行了),其它的信息都是经过这些基础数据处理而来:建立图五这样的表格可比一个一个创建帐户要容易多了,最有吸引力的是可以用现成的,各个分部的人资部门都应该有包含员工姓名、职务、部门等信息的电子文档。
在我们重庆分部,行政部经常不定期的发布包含所有员工的最新通讯录,那里面的资料比较全,上表六项内容都有,我就是用的通讯录作为底稿,然后在EXCEL中简单编辑一下就可以了(将其命名为AD.XLS),注意EXCEL的列设置请按照图七进行(由于列数过多,我们将该图由三张小图片纵向排列而成),一共需要16列,但只需要填H,I,J,K,M这五列,例如H列是用于填写职务的,M列是填部门的,别把顺序搞错了。
cmd批量添加ad域用户
cmd批量添加ad域⽤户⼯作中有⽤到,研究了⼀下午,做个记录。
搭建ad域百度都有,就不写了,我是在2019上搭的1、创建组织单位test,以及在它下⾯创建test1、test22、将下⾯表格的内容使⽤批处理命令添加到ad域中3、使⽤的命令语句如下for /f "skip=1 eol=; tokens=1-12 delims=, " %%a in (C:\Users\Administrator\Desktop\ADuserdata2.csv) do dsadd user "cn=%%a,ou=%%l,ou=%%k,dc=aaa, dc=com" -upn %%f@ -samid %%f -ln %%b -fn %%c -display %%a -tel %%d -email %%e -mobile %%g -dept %%i -company %%h -title %%j -acctexpires never参数含义:skip=1跳过第⼀⾏数据eol=;注释⾏开始字符为";"tokens=1-9每次提取1-9个变量delims=, 分割符号为","dsadd user :向域中添加⽤户cn=%%a:⽤户姓名为cn第⼀个参数%%a这个参数是⽤户在运⾏命令时需要输⼊的第⼀个参数ou=%%l,ou=%%k:存储⽂件夹的名称dc=aaa, dc=com :域名称-upn %%f@:这个就是登录名添加在域之前的-samid %%f :这个其实也是登录名,只不过版本不同,所以他和上⾯的参数保持⼀致-pwd %3 :登录密码-display %4 -dept %5 -company %6 -office %7 -tel %8 :这个就是⾥⾯的描述信息了,放在⼀块说,依次是:显⽰名称,部门,公司,办公室,电话。
-display %%a :显⽰名称-tel %%d:电话-email %%e:电⼦邮箱-mobile %%g:⼿机-dept %%i:部门-company %%h:公司-title %%j:职务-acctexpires never:永不过期4、命令执⾏情况5、踩坑记录1、如果有多个ou,则⼩的放前⾯,⼤的往后放,如上⾯的test1和test2、读取数据,我⽤的是win2019,只能两个%加上字母,数字不⾏,⼀个%也不⾏3、upn类似于数据库的主键,不能重复4、⽂档要求csv格式。
批量创建域用户的事情
之前在客户的的一个项目里做过一个批量创建域用户的事情,用脚本创建了四五千个用户,这个过程简直就是各种坎坷、各种坑啊。
之前见过论坛里很多人提到批量创建用户的事情,网络上也有很多的脚本可以参考,但是那些脚本都是在理想状态下使用的,在生产环境下还是会碰到很多问题的,我在这里就不提技术的实现过程了,仅仅分享一下在那个项目里的心得吧,基本上都是需要注意的地方。
大多数人的习惯是使用一个脚本去读包含有用户信息的csv的表格文件,之后去运行一条命令来实现创建用户的功能。
这种csv文件一版都是公司的人事部门的同事给的,可他们给的的表格里的内容并不是完全“合格”的。
1.用户姓名问题。
姓名一半都是两个字或者三个字的,有的HR为了表格看起来美观会把两个字的姓名中间加一个空格来,这样可就麻烦了,我们的脚本不认识这样的格式可能会直接报错的。
所以我们先要用excel打开csv文件,之后用excel函数直接把名字中的空格去掉。
2.用户信息空白项。
一般我们的表格中会包含很多条目,姓名啊,电话啊,部门啊,职位啊乱七八糟的,可是现实中可能会有一部分人的信息不全,比如没有电话,这样在命令执行的时候电话那一行为空也会直接报错的至于解决方法,如果人员信息缺失条目不多那就直接先手动写上,等用户创建完成后再给他清空就完事了。
可万一好多人的信息确实很严重呢,我们可以把表格直接丢回给HR,让他去改,但要是如果他不改呢,好吧,我当时确实是遇到这个问题了我当时的解决方法是先用脚本把用户的必要信息创建出来,何为必要的信息,就是创建用户时候必须要填写的项目,例如姓名啊,upn啊,samid啊,密码啊,ou啊什么的,等用户创建完成后,在用脚本去读取csv文件去修改我们已经创建好的用户,而且是一个条目一个条目的修改,比如先批量把用户的电话信息修改好,之后在把用户的地址信息修改好,至于那些为空的条目,命令运行的时候会直接报错,那也无所谓对我们没有什么影响了。
3.用户所在ou的问题。
自动加域脚本改计算机名加域加用户到本地管理员组
自动加域脚本改计算机名加域加用户到本地管理员组一共有三个脚本。
第一个是改计算机名然后重启。
第二个是加域和加用户账号到本地管理员组。
第三个是删除痕迹和重启这里计算机名的命名方法是:cis+ domainaccount+00 (site 简写+用户账号+用户第几台计算机,可以根据需要调整计算机名你只需要运行第一个脚本changename.vbs 然后会弹出一个窗口叫你输入计算机名。
余下的就有脚本帮你完成了。
changename.vbs'************************************************************** **************** ********************************'Description: Change computer name reboot the system and auto login system with administrator ''author:Bo.zhang@/doc/025666851.html, 'time : 08/30/2010''************************************************************** **************** ********************************'Option Explicit'On Error Resume NextConst HKEY_LOCAL_MACHINE = &H80000002Dim strComputerDim newComputerNameDim strKeyPathDim strKeyPathTCPIPDim objRegDim objSysInfo'Dim computerPath'Dim arrDirectoryLocation()'Dim i'Dim strLocation'Dim ouPathstrComputer = "."strKeyPath = "SYSTEM\CurrentControlSet\Control\ComputerName\"strKeyPathTCPIP = "SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\"Set objReg = GetObject("WinMgmts:{impersonationLevel=Impersonate}!\\" & _strComputer &"\root\default:StdRegProv")Set ShellObj = WScript.CreateObject("WScript.Shell")'*****************************************************make the script run one when system startShellObj.RegWrite"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\C urrentVersion\RunOnce\addtod omain", "c:\windows\addtodomain.vbs"Set FSO = WScript.CreateObject("Scripting.FilesystemObject")'****************************** copy files to localFSO.CopyFile "addtodomain.vbs", "c:\windows\addtodomain.vbs"Set NetObj = WScript.CreateObject("/doc/025666851.ht ml,work")WinDir = FSO.GetSpecialFolder(0)SysDir = FSO.GetSpecialFolder(1)On Error Resume NextWinPass="HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ WindowsNT\CurrentVersion\Winlogon\"'Call changeRegInfo(newComputerName)'Call AutoLogon'Call shutdown'**************************************FUNCTIONS*********** ****************** ******************************************* 'Function changeRegInfo(newComputerName)newComputerName = InputBox ("inpute your computer name")objReg.DeleteValueHKEY_LOCAL_MACHINE,strKeyPathTCP,"Hostname"objReg.DeleteValueHKEY_LOCAL_MACHINE,strKeyPathTCP,"NV Hostname"objReg.SetStringValue HKEY_LOCAL_MACHINE,strKeyPath & "ComputerName\",_"ComputerName",UCase(newComputerName)objReg.SetStringValue HKEY_LOCAL_MACHINE,strKeyPath & "ActiveComputerName\",_"ComputerName",UCase(newComputerName)objReg.SetStringValueHKEY_LOCAL_MACHINE,strKeyPathTCPIP,"Hostname",LCase( newComputerName) objReg.SetStringValue HKEY_LOCAL_MACHINE,strKeyPathTCPIP,"NV Hostname",LCase(newComputerName)'End Function'************************************************************** **************** ******************************************* Dim objFsoSet objFso = WScript.CreateObject("Scripting.FileSystemObject")objFso.CopyFile "addtodomain.*", "c:\windows"''************************************************************** **************** ******************************************* 'Function AutoLogonDim sUser, sPass' sUser = InputBox("Enter Username to Autologin")' sPass = InputBox("Enter Password")sUser = "administrator"sPass = "LSI1AdMiN"ShellObj.RegWrite WinPass & "AutoAdminLogon","1","REG_SZ"ShellObj.RegWrite WinPass & "DefaultPassword", sPass, "REG_SZ"ShellObj.RegWrite WinPass & "DefaultUserName", sUser,"REG_SZ"'Set ShellObj = WScript.CreateObject("WScript.Shell")' shellobj.Run "/doc/025666851.html, /k"&"shutdown -r -t 0"' WScript.QUIT "/doc/025666851.html, /k"&'End Function'************************************************************** **************** ******************************************* Set ShellObj = WScript.CreateObject("WScript.Shell")shellobj.Run "shutdown -r -t 0"'************************************************************** **************** ******************************************* 第二个脚本你需要在红色部分根据需要添加你公司的域和你的加入域时用的账号和密码'************************************************************** **************** *******************'Description: Join domian and add user account to local administrators group and reboot the system'author:Bo.zhang@/doc/025666851.html, ' Date:08/30/2010'************************************************************** **************** ********************Const JOIN_DOMAIN = 1Const ACCT_CREATE = 2Const ACCT_DELETE = 4Const WIN9X_UPGRADE = 16Const DOMAIN_JOIN_IF_JOINED = 32Const JOIN_UNSECURE = 64Const MACHINE_PASSWORD_PASSED = 128Const DEFERRED_SPN_SET = 256Const INSTALL_INVOCA TION = 262144strDomain = "yourdomain"strPassword = "********"strUser = "your account "Set objNetwork = CreateObject("/doc/025666851.html,work ")strComputer = /doc/025666851.html,puterName Set objComputer = GetObject("winmgmts:{impersonationLevel=Impersonate}!\\" & _strComputer & "\root\cimv2:Win32_/doc/025666851.html ,='" & _strComputer & "'")ReturnValue = objComputer.JoinDomainOrWorkGroup(strDomain, _ strPassword, _strDomain & "\" & strUser, _NULL, _JOIN_DOMAIN + ACCT_CREATE)'************************************************************** **************** ****************' add useraccount to local admin group'************************************************************** **************** *****************Dim useraccountSet net = WScript.CreateObject("/doc/025666851.ht ml,work")local = /doc/025666851.html,puterName useraccount =Left(local,Len(local)-2)useraccount=Right(useraccount,Len(useraccount)-3)MsgBox useraccountDomainName = "lsi"set group = GetObject("WinNT://"& local &"/Administrators")on error resume nextgroup.Add "WinNT://"& DomainName &"/"& UserAccount &""CheckErrorsub CheckErrorif not err.number=0 thenset ole = CreateObject("ole.err")MsgBox ole.oleError(err.Number), vbCriticalerr.clearelseMsgBox "Done."end ifend sub'************************************************************** **************** ****************'disable admin auto logon and reboot the system the system '************************************************************** **************** ****************WinPass="HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ WindowsNT\CurrentVersion\Winlogon\"Set ShellObj = WScript.CreateObject("WScript.Shell")ShellObj.RegWrite WinPass & "AutoAdminLogon","0","REG_SZ"'************************************************************** **************** ****************'delete teh addtodomain in c:\windows'************************************************************** **************** ****************ShellObj.Run ("""c:\windows\addtodomain.bat""") ', 0, True 'shellobj.Run "shutdown -r -t 0"第三部分是重启删去在用户计算机里的脚本'****************************************************************************** ********************************addtodomain.bat (起这个名字跟第二个相同时应为我再用vbs copy 时我图省事,把addtodomain.* 都拷贝到本地。
如何实现AD域账户导入导出
如何实现AD域账户导入导出AD域账户的导入和导出是AD域管理中非常重要的功能之一、通过导入和导出AD域账户,管理员可以方便地进行批量更新和备份账户信息,提高工作效率。
下面将详细介绍实现AD域账户导入导出的方法和步骤。
PowerShell是一种强大的脚本语言,可以通过编写脚本来实现AD域账户的导入和导出。
1. 导出AD域账户:管理员可以使用以下PowerShell脚本将AD域中的账户导出到CSV文件中:```Get-ADUser -Filter * -Properties * , Export-Csv -PathC:\Users.csv -NoTypeInformation```这个脚本将获取AD域中的所有账户信息,并将其导出到名为Users.csv的CSV文件中。
在导出过程中,脚本会保留账户的所有属性信息。
2. 导入AD域账户:管理员可以使用以下PowerShell脚本将CSV文件中的账户导入到AD域中:```$users = Import-Csv -Path C:\Users.csvforeach ($user in $users)New-ADUser -SamAccountName $user.SamAccountName -Name $ -GivenName $user.GivenName -Surname $user.Surname -UserPrincipalName $erPrincipalName -Enabled $user.Enabled ```这个脚本将从名为Users.csv的CSV文件中读取账户信息,并使用New-ADUser命令将账户导入到AD域中。
在导入过程中,脚本会使用CSV文件中的属性值来设置相应的账户属性。
ADUC是Windows Server操作系统自带的AD域管理工具,可以通过ADUC进行AD域账户的导入和导出。
1.导出AD域账户:管理员可以通过以下步骤将AD域中的账户导出到文本文件中:-打开ADUC工具,找到需要导出的OU(组织单位)。
AD中批量添加用户帐户
在AD域中,如何批量添加域用户帐号?作为网管,有时我们需要批量地向AD域中添加用户帐户,这些用户帐户既有一些相同的属性,又有一些不同属性。
如果逐个添加、设置的话,十分地麻烦。
一般来说,如果不超过10个,我们可利用AD用户帐户复制来实现。
如果再多的话,我们就应该考虑使用csvde.exe 或ldifde.exe来减轻我们的工作量了。
最后简单介绍一下利用脚本(可利用循环功能)批量创建用户帐号一、AD用户帐户复制1、在“AD域和计算机”中建一个作为样板的用户,如S1。
2、设置相关需要的选项,如所属的用户组、登录时间、用户下次登录时需更改密码等。
3、在S1上/右键/复制,输入名字和口令。
说明:1、只有AD域用户帐户才可以复制,对于本地用户帐户无此功能。
2、帐户复制可将在样板用户帐户设置的大多数属性带过来。
具体如下:二、比较csvde与ldifde三、以csvde.exe为例说明:域用户帐户的导出/导入操作步骤如下:1、在“AD域和计算机”中建一个用户,如S1。
2、设置相关需要的选项,如所属的用户组、登录时间、用户下次登录时需更改密码等。
3、在DC上,开始/运行:cmd4、键入:csvde –f demo.csv说明:(1)不要试图将这个文件导回,来验证是否好使。
因为这个文件中的好多字段在导入时是不允许用的,如:ObjectGUID、objectSID、pwdLastSet 和samAccountType 等属性。
我们导出这个文件目的只是为了查看相应的字段名是什么,其值应该怎么写,出错信息如下:(2)可通过-d –r参数指定导出范围和对象类型。
例如:-d “ou=test,dc=mcse,dc=com” 或-d “cn=users,dc=mcse,dc=com”-r “< Objectclass=user>”1、以上面的文件为参考基础,创建自己的my.csv,并利用复制、粘贴、修改得到多条记录。
共享打印机脚本
.4.6 利用脚本批量添加域用户账户以上两种方法是比较常用的批量用户账户添加方法,但是不够灵活(不可以设置密码),而且在添加用户数量多时,输入的工作量也比较大。
本节所介绍的WSH脚本方法相对来说,工作量比较小,但难度却要高许多,需要懂得一些基本的脚本语言。
仅作选学参考。
【注意】以下脚本也需要在文本模式下,以英文输入方式输入,特别是其中的逗号和引号。
其实这是代码输入的一般性常识。
WSH的全称是Windows Script Host,是一种支持ActiveX(COM)的独立脚本语言。
WSH脚本程序本来是为了替代DOS时代的批处理文件而产生的,后来由于WSH 的应用很广泛,已经不只是局限于批处理的替代品了。
从Windows98开始,操作系统就已经自带了WSH,因此在Windows98或以上的操作系统中,可以不安装任何软件就能直接使用WSH。
WSH可以使用VBscript与Jscript,即使用的脚本语言与网页脚本是一样的。
WSH 文件的扩展名为vbs及js,分别用VBscript与Jscript作为编程脚本语言。
还有一种脚本文件的扩展名是wsf,它是一种包含XML的文件,wsf文件中可以同时包含VBscript与Jscript两种语言。
wsf文件中,可以使用多种脚本,需要一些XML标签来声明的,最基本的就是用<script>标签说明脚本的类型,另外最外层要用<job>标签声明任务。
此处所介绍的不是这种支持XML的脚本。
1. 利用WSH脚本中的循环功能实现批量创建用户帐号用脚本批量添加用户账户的一个最大的好处就是代码输入工作量小,几行就完成了,而且还可以配置用户密码。
但难度较大,而且用户名只能是有规律的,不可能针对每个用户具体指定用户名。
现在假设要在grfw.local域的Sales组织单位中创建10个用户,用户名为User1、User2~User10。
下面是这个示例的代码,用记事本程序以vbs或js扩展名格式保存,然后直接双击运行即可。
各种批量创建用户的方法
各种批量创建⽤户的⽅法各种批量创建⽤户的⽅法批量创建⽤户的⽅法总共有如下的⼏种⽅式:1.⽤csvde命令配合指定⽂件的使⽤2.Ldifde配合指定的使⽤3.Dsadd配合脚本的使⽤4. P ower Shell命令配合脚本的使⽤5.利⽤纯脚本来建⽤户·Csvde批量创建⽤户(可以使⽤的⽂件扩展名.csv或.txt)功能:a.可以批量建⽤户或OU等,即可以把⽤户信息写到⼀个⽂件⾥,⼀⾏是⼀个⽤户信息,利⽤该命令可以把⽂件内容导⼊AD,从⽽批量创建相应的⽤户。
b.可以批量导出⽤户信息,如果你对上述⽂件内容中有关⽤户属性不知从何⼊⼿,就可以使⽤该导出功能了。
当然这个导出不仅仅可以导出⽤户,也可导出组、计算机、OU等对象。
当然导出范围可以⾃定义,即可以整个域,也可以某个容器,如sails这个OU。
在windows域⾥⽤csvde批量创建账户。
第⼀步,写⼊记事本:DN,objectClass,userPrincipalname,displayName,userAccountControl“CN=xiewl,CN=users,DC=hiteam,DC=com”,user,xiewl@,谢伟梁,514“CN=liukj,CN=users,DC=hiteam,DC=com”,user,liukj@,刘克基,514批量导出⽤户:csvde -f ad_sails_ou.txt -d ou=sails,dc=net,dc=com只导出特定OU内所有象。
见图⽰:导出后的⽂件内容如下所⽰:解释:将这些写到⼀个记事本⾥,第⼀⾏是属性⾏,不能分⾏,⼀个⽤户占⼀⾏。
因为域的密码复杂性要求,⽽且记事本中⼜不能包括密码,因此导⼊的⽤户必须是禁⽤状态,所以UserAccountControl的值设置为514,导⼊的⽤户处于禁⽤状态。
512为启⽤状态。
注意:将这个记事本放在C盘根⽬录下,命名为users.txt不放在C盘根⽬录也可以,执⾏命令的时候要跟路径。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2.4.6 利用脚本批量添加域用户账户
以上两种方法是比较常用的批量用户账户添加方法,但是不够灵活(不可以设置密码),而且在添加用户数量多时,输入的工作量也比较大。
本节所介绍的WSH脚本方法相对来说,工作量比较小,但难度却要高许多,需要懂得一些基本的脚本语言。
仅作选学参考。
【注意】以下脚本也需要在文本模式下,以英文输入方式输入,特别是其中的逗号和引号。
其实这是代码输入的一般性常识。
WSH的全称是Windows Script Host,是一种支持ActiveX(COM)的独立脚本语言。
WSH脚本程序本来是为了替代DOS时代的批处理文件而产生的,后来由于WSH的应用很广泛,已经不只是局限于批处理的替代品了。
从Windows98开始,操作系统就已经自带了WSH,因此在Windows98或以上的操作系统中,可以不安装任何软件就能直接使用WSH。
WSH可以使用VBscript与Jscript,即使用的脚本语言与网页脚本是一样的。
WSH文件的扩展名为vbs及js,分别用VBscript与Jscript作为编程脚本语言。
还有一种脚本文件的扩展名是wsf,它是一种包含XML的文件,wsf文件中可以同时包含VBscript与Jscript两种语言。
wsf文件中,可以使用多种脚本,需要一些XML标签来声明的,最基本的就是用<script>标签说明脚本的类型,另外最外层要用<job>标签声明任务。
此处所介绍的不是这种支持XML 的脚本。
1. 利用WSH脚本中的循环功能实现批量创建用户帐号
用脚本批量添加用户账户的一个最大的好处就是代码输入工作量小,几行就完成了,而且还可以配置用户密码。
但难度较大,而且用户名只能是有规律的,不可能针对每个用户具体指定用户名。
现在假设要在grfw.local域的Sales组织单位中创建10个用户,用户名为User1、User2~User10。
下面是这个示例的代码,用记事本程序以vbs或js扩展名格式保存,然后直接双击运行即可。
Set objDomain = GetObject("LDAP://dc=grfw,dc=local")# 调用(也称绑定)名为grfw.local对象
Set objOU = objDomain.Create("organizationalUnit", "ou=Sales")# 创建一个名为Sales的组织单位。
如果相应的组织单位已创建,则此语句不要,而要采用“Set objContainer = GetObject
("LDAP://OU=Sales,dc=grfw,dc=local")”语句,否则会显示“对象已存在”错误信息。
Set objOU = GetObject("LDAP://OU=Sales,dc=grfw,dc=local")# 调用域名为grfw.local,组织单位为Sales对象
objOU.SetInfo # 保存组织单位信息
For i = 1 To 10 # 设置循环变量和级数
Set objUser = objContainer.Create("User", "cn=UserNo" & i)# 在Users容器下创建UserNo1到UserNo10的用户账户
objUser.Put "sAMAccountName", "UserNo" & i # 把所得的“UserNo”变量值赋予给相应用户账户的sAMAccountName属性
objUser.SetInfo # 保存用户信息
objUser.SetPassword "Winda0101" # 设置所有用户的初始密码均为“Winda0101”
objUser.AccountDisabled = FALSE # 启用用户
objUser.SetInfo # 保存用户信息
Next # 下一个循环
WScript.Echo "10 Users created." # 脚本编写结束后的显示信息,提示已创建了1000个用户账户
以上语句在记事本中的格式如图2-31所示。
图2-31 WSH脚本格式示例
添加用户后,也会在“Active Directory用户和计算机”管理单元相应的组织单位下添加这些用户,如图2-32所示。
注意他们已有了初始密码。
批量添加后还要对各用户进行重命名,重命名的方法很简单,只需在相应账户上单击右键,在弹出菜单中选择“重命名”选项即可进行重命名。
图2-32 用WSH批量添加的10个用户。