最新AD用户组织单元的导入和导出.docx
- 文档编号:26294694
- 上传时间:2023-06-17
- 格式:DOCX
- 页数:26
- 大小:1.31MB
最新AD用户组织单元的导入和导出.docx
《最新AD用户组织单元的导入和导出.docx》由会员分享,可在线阅读,更多相关《最新AD用户组织单元的导入和导出.docx(26页珍藏版)》请在冰豆网上搜索。
最新AD用户组织单元的导入和导出
AD用户、组织单元的导入和导出
AD用户、组织单元的导入和导出
AD用户的导入和导出工具有很多种,这里只解释微软官方提供的工具
第三方工具,通过API、ADSI二次开发的工具不在讨论之列。
在下接触AD不就,文中难免疏漏,还请各位指正,先行谢过。
入门演示
在c:
\下面保存此文件为test.csv路径和文件名可以使用其它
注意别留多余的空格自找麻烦
其实也就是这样一个表
DN
objectClass
sAMAccountName
"CN=test1111,OU=test,DC=bjtest,DC=COM"
user
test1111
"CN=test2222,OU=test,DC=bjtest,DC=COM"
user
test2222
"CN=test33333,OU=test,DC=bjtest,DC=COM"
user
test33333
用逗号分割的形式写,最后一项后面不写逗号
然后再命令行下输入下面指令
第一条typetest.csv是为了显示文本中的内容
第二条是用来导入用户的命令
用户已经导入了,但用户是禁用的。
如果要该用户能登陆域要把用户启用。
DN
objectClass
sAMAccountName
这三个属性是必须的,也是最少的导入属性。
大批量导入用户
这样导入只是为了有个初步的认识,下面介绍一些实际操作中的问题。
比如一个测试AD,为了模拟生产AD的环境,需要把用户和组织单元全部导入,事实上我遇到了一个上百个组织单元,接近7000个用户信息的导入操作,涉及真实信息需要保密,此处只还是做一个模拟的例子。
既然需要导入这么多用户,肯定要有相应的信息了,于是我得到了两个csv文件。
一个是组织单元的导出文件,一个是用户的导出文件。
文件的内容不便透露,这里还是模拟一下。
下面再test下面建几个组织单元(OU),如图。
然后建几个用户分别放进对应的ou里,格式从前向后依次是最小的ou,如下格式
DN
objectClass
sAMAccountName
"CN=testAA,OU=test11,OU=test1,OU=test,DC=bjtest,DC=com"
user
test1111
"CN=testbb,OU=test12,OU=test1,OU=test,DC=bjtest,DC=com"
user
test2222
"CN=testcc,OU=test2,OU=test,DC=bjtest,DC=com"
user
test33333
文本内容这样写
DN,objectClass,sAMAccountName
"CN=testAA,OU=test11,OU=test1,OU=test,DC=bjtest,DC=com",user,testAA
"CN=testbb,OU=test12,OU=test1,OU=test,DC=bjtest,DC=com",user,testbb
"CN=testcc,OU=test2,OU=test,DC=bjtest,DC=com",user,testcc
用户已经导入,注意这种最简的导入方式用户默认是禁用的,并且是没有密码的,后面将讲解怎么批量添加密码。
如果希望导入用户是启用状态的,请使用userAccountControl,将其值设定为512或66080等值,具体数值的含义请参考
同样可以写入电话,Email,办公部门等等其他属性,关于批量修改特定属性将在后面介绍。
使用CSVDE导入的方法要求有两点
1用户导入所使用的文本文件,格式必须严格符合。
2放置导入用户的组织单元需要事先建立好,才能导入。
针对问题1,比如文本格式有误,会提示
可以使用命令
并会在指定路径输出一个错误日志,更多关于CSVDE的用法请参考微软的文档
针对要点2下面介绍:
如何批量导入组织单元
在讲解导入之前,我们先了解下csvde的导出,之后就可以明白导入文本的写法。
在命令行下输入
C:
\>csvde-fusers.csv-d"ou=test,dc=bjtest,dc=com"-r"(&(objectcategory=person)(objectclass=user))"-lDN,objectClass,samaccountname-jc:
\
打开users.csv文件
下面解释这个命令的含义
-d"ou=test,dc=bjtest,dc=com"搜索下的ou为test下的内容
-r"(&(objectcategory=person)(objectclass=user))"搜索objtectcategory属性为person并且objtectclass=user的对象(&是“与”的意思)
-lDN,objectClass,samaccountname是导出哪些属性
在讲解导入之前,我们先了解下csvde的导出,之后就可以明白导入文本的写法。
在命令行下输入
C:
\>csvde-fusers.csv-d"ou=test,dc=bjtest,dc=com"-r"(&(objectcategory=person)(objectclass=user))"-lDN,objectClass,samaccountname-jc:
\
把这个命令修改一下
C:
\>csvde-fusers.csv-d"ou=test,dc=bjtest,dc=com"-r"(&(objectcategory=OrganizationalUnit))"-lDN,objectClass,samaccountname-jc:
\
查看导出的文本文件
就只含有组织单元了。
这样,也就是按这个格式写入你的组织结构就可以了。
但是编辑也是有技巧的,下面介绍两个技巧,用到两个软件,一个是我们熟悉的office系列的Excel表格制作工具,一个是UtralEdit
用Excel编辑文本的技巧
使用Excel主要是用来编辑逗号分割的文件(*.csv),原因是我得到的那个逗号分割的文件太大了..实际演示下就明白了。
打开Excel
我的是2007,2003的一样操作。
右下角需选中csv,打开你的目标文件
此处选中逗号
如果文本识别符号选择无的话,可以把引号内的内容拆开,这样更容易编辑了。
具体编辑的技巧就是Excel的使用技巧了,不再多说,避免跑题太远。
总之利用Excel可以方便的编辑导出的文件。
编辑的目的,我这次操作是更换域名,也就是批量的把DC=*,DC=*替换成DC=bjtest,DC=com,还算方便。
用UtralEdit编辑文本的技巧
这部分待续,UE卸载掉了,关键词:
列操作,替换
使用ldifde命令导入导出AD对象
LDIFDE的使用与CSVDE的操作相似,由于使用不多,了解更多信息请访问以下两个链接了解。
简单对这个命令进行介绍
查看LDIFDE常规参数
单击开始,指向程序,指向附件,然后单击“命令提示符”。
在命令提示符下,键入:
ldifde?
。
然后,屏幕上会显示内置的帮助文件,如下所示。
常规参数
-i打开Import模式(默认为Export)
-ffilename输入或输出文件名
-sservername要绑定到的服务器名称(默认为登录域的DC)
-cFromDNToDN从FromDN到ToDN发生的取代
-v打开Verbose模式
-j日志文件的位置
-t端口号(默认为389)
-u使用Unicode格式
-?
帮助
使用上面的
C:
\>csvde-fusers.csv-d"ou=test,dc=bjtest,dc=com"-r"(&(objectcategory=person)(objectclass=user))"-lDN,objectClass,samaccountname-jc:
\
把csvde换成ldifde可以得到下面的结果,可以看出只是导出的格式不同而以。
和CSVDE同样Ldifde也不能导入或导出密码。
此处不更多介绍
既然不能导入导出密码,就要另外想办法。
7000个用户逐个设置密码显然是不现实的。
于是需要使用另一个命令DSADD系列。
使用DSADD、DSMOD等操作AD对象
直接在根目录键入dsadd可以看到命令的说明
输入dsadduser/?
可以得到关于user的相关内容
内容太长,我把文本输出了
另请参阅:
dsaddcomputer/?
-将计算机添加到目录的帮助。
dsaddcontact/?
-将联系人添加到目录的帮助。
dsaddgroup/?
-将组添加到目录的帮助。
dsaddou/?
-将组织单位添加到目录的帮助。
dsadduser/?
-将用户添加到目录的帮助。
dsaddquota/?
-将配额添加的目录的帮助
目录服务命令行工具帮助:
dsadd/?
-添加对象的帮助。
dsget/?
-显示对象的帮助。
dsmod/?
-修改对象的帮助。
dsmove/?
-移动对象的帮助。
dsquery/?
-查找与搜索标准匹配对象的帮助。
dsrm/?
-删除对象的帮助。
描述:
把用户添加到目录。
语法:
dsadduser
[-mi
[-empid
[-memberof
[-email
[-mobile
[-webpg
[-company
[-hmdrv >][-profile [-mustchpwd{yes|no}][-canchpwd{yes|no}] [-reversiblepwd{yes|no}][-pwdneverexpires{yes|no}] [-acctexpires [{-s [-p{ 参数: 值描述 要添加的用户可分辨名称(DN)。 如果目标对象 被省略,将从标准输入(stdin)中读取。 -samid 如果没有指定, dsadd会使用 创建SAM帐户名。 -upn -fn -mi -ln -display -empid -pwd{ 如果是*,会提示您输入 密码。 -desc -memberof -office -tel -email -hometel -pager -mobile -fax -iptel -webpg -title
-dept
-company
-mgr
-hmdir
如果它是UNC路径,一个
将映射到此路径的驱动器号必须也要用-hmdrv指定。
-hmdrv >设置用户主驱动器号为 > -profile -loscr -mustchpwd{yes|no}用户在下次登录时是否更改密码。 默认值: no。 -canchpwd{yes|no}用户是否可以更改密码。 如果-mustchpwd是"yes", 它应该是"yes"。 默认值: yes。 -reversiblepwd{yes|no} 是否使用可逆的加密保存密码。 默认值: no。 -pwdneverexpires{yes|no} 用户密码是否永远不过期。 默认值: no。 -acctexpires 0值 意味着今天结束后帐户就过期;正数值意味着帐户在未 来过期;负数意味着该帐户已经过期并将过期日期设置 在过去;字符串值"never"意味着该帐户永远不过期。 -disabled{yes|no}用户帐户是否禁用。 默认值: no。 {-s -s -d 默认值: 在登录域的DC。 -u 默认值: 该登录的用户。 用户名 可以是: 用户名,域\用户名或用户主体名称(UPN)。 -p{ 如果已输入*,会提示您输 入密码。 -q安静模式: 不在标准输出显示任何输出。 {-uc|-uco|-uci}-uc指定从管道的输入或至管道输出用Unicode格式。 -uco指定至管道或文件的输出用Unicode格式。 -uci指定从管道或文件的输入用Unicode格式。 备注: 如果您在命令提示没有提供目标对象,会从标准输入(stdin)获取目标对象。 可以 从键盘、重定向文件或从另一个命令的管道输出接受Stdin数据。 要从键盘或在 重定向文件中标记stdin数据的结束,请使用Control+Z表示文件结束(EOF)。 如果您提供的值包含空格,请在文字两边使用引号(例如,"CN=JohnSmith, CN=Users,DC=microsoft,DC=com")。 如果您输入了多个值,这些值必须用空格隔开 (例如,一个可分辨名称列表)。 特殊令牌$username$(不区分大小写)可以用来把SAM帐户名放在一个参数的值。 例如,如果目标用户DN是CN=JaneDoe,CN=users,CN=microsoft,CN=com, SAM帐户名属性是"janed",-hmdir参数能有以下替换值: -hmdir\users\$username$\home -hmdir参数的值被修改为以下值: -hmdir\users\janed\home 描述已经很详细了,比如我需要给用户test1111设置密码,则输入以下命令: dsmoduser"cn=test1111,ou=test,dc=bjtest,dc=com"-pwd1111 含义就是修改下test组织单元内的test1111用户的密码为1111 成功。 修改,新增,查询用户都可以这样操作。 这个命令相比csvde的优点可以通过下面的例子来体现: 比如我现在拿到一份名单 张三,电话12345 李四,电话23456 王五,电话34567 需要在AD中建立3个用户,写入电话,并把密码初始值设置为和自己电话一样的数值,注意也就是每个人的密码还是不同的,并要写AD的名字和显示名(displayname这个属性,做过OCS的应该知道这个名字将会是OC用户的显示名),将3个用户放入test组织单元中。 那么下面把文本修改成如下的内容,下面文本还是用逗号分割: zhangsan,张三,12345 lisi,李四,23456 wangwu,王五,34567 可以运行下面命令 dsadduser"cn=zhangsan,ou=test,dc=bjtest,dc=com"-display张三-pwd12345-tel12345 同样操作李四,王五,如果用户多了,可以用Excel编辑这个命令序列,存成.bat文件执行,但还有其他的办法,更适合大量用户时进行操作。 文本内容如上面所示 输入下面命令(为了显示在一行内换了小字体,应用请复制) for/f"tokens=1,2,3delims=,"%ain(users.csv)dodsadduser"cn=%a,ou=test,dc=bjtest,dc=com"-pwd%c-tel%c-display%b 结果如图 下面将讲解的是 利用for循环语句实现批量操作 解释该命令 token=1,2,3每行取第1,2,3 FOR语句是个标准的批处理命令 在命令行下运行FOR/? 同样会得到很多信息,又耐心的可以逐页看完 这里仅介绍配合DSADD的应用 FOR配合文本文件使用可以这样理解 比如一个句子 我让()去学校,拿一本()书回来,送给()老师 而文本中,就是 张三,历史,李 李四,政治,何 王五,生物,张 于是就填出3个句子 我让(张三)去学校,拿一本(历史)书回来,送给(李)老师 我让(李四)去学校,拿一本(政治)书回来,送给(何)老师 我让(王五)去学校,拿一本(生物)书回来,送给(张)老师 写法记住一个固定的就行了,忘记了去google一下也很多。 这里就根据前面举的例子来讲解 for/f"tokens=1,2,3delims=,"%ain(users.csv)dodsadduser"cn=%a,ou=test,dc=bjtest,dc=com"-pwd%c-tel%c-display%b tokens=1,2,3就是每行读取地1,2,3个值 delims=,就是认为逗号是分开每个值的标识 %a就是从a开始命名,第一个是%a,第二个值是%b,第三个值是%c依次类推,最多就a-z26个,好像也可以用%%a,依次类推。 括号内的users.csv就是对应读取的文本文件了, do后面就是要填入的“句型”了 也就是说,把文本的内容每行以逗号分开读取3个值 重复执行dsadduser"cn=第一个值,ou=test,dc=bjtest,dc=com"-pwd第三个值-tel第三个值-display第二值 恩,就这样,更多内容请自行搜索吧,不给链接了。 可以搜索关键词: fordelims或者for/f 使用脚本添加某一特定属性 声明: 此部分内容属于分享内容,代码为论坛网友ghjconan(如果记错了名字抱歉) 提供,在此再次表示感谢。 这里讲这个内容也是遇到一个实际情况,需要批量填写一批OCS的线路URI,于是查到一个类似的脚本在开发人员指导下修改后操作成功。 下面分享这个案例,希望有所借鉴 需求是像域用户填写某个属性的内容,经查询这个属性的名称叫 msRTCSIP-Line 于是写了一个文本,内容大概如下 test1,tel: +861012345678 test2,tel: +861012345678 test3,tel: +861012345678 将上述内容保存为文本文件Userinfo.csv 将下面脚本保存成A.vbs并和Userinfo.csv放在同一路径下,在DC上运行。 DimobjInfo ConstADS_SCOPE_SUBTREE=2 Setfso=CreateObject("Scripting.FileSystemObject") SetobjFile=fso.OpenTextFile("Userinfo.csv
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 最新 AD 用户 组织 单元 导入 导出