导入用户方法.note
·注意:使用 dsadd 命令导入用户,必须要指定该用户在 域中的 LDAP 路径才能够创建。(创建 OU、Group 也是一样,也是需要指定其在域中的LDAP路径)[-memberof 参数 也是需要指定 组在域中的LDAP路径,不能只指定单个组名]
·有时创建的用户可能不是启用的状态,可以使用 net user 命令启用:(原因暂未知晓)
语法:
net user [用户名] /active:yes
net user user1 /active:yes
本次使用的 CSV 文件:
如果实验环境中的域不一样,那么就使用记事本的替换功能,按 Ctrl + H ,将域替换成一样的
(替换时,记得要写完全【因为可能用户Email中有些会被匹配上】,例如:dc=china,dc=net)
一、导入用户:
使用 for 循环进行 导入
1、先将 .csv 文件中的内容复制出来,复制到 .txt 文件中:
将它的内容复制,放到 C盘下 作为 users.txt 文件
复制到 TXT 文件中:

然后 复制其中一个 空白行:

按 Ctrl + H 替换:
将 复制的空白行粘贴到,要被复制的对象中:

然后设置将它们 全部替换成 逗号“ ,”,点击替换全部:

可以看到结果:

关于用户的参数中,如果给出的 OU 或者 用户组较少,那就可以手动进行创建。
2、复制 for 命令的模板:
for /?
# 按空格继续查看
建议复制到记事本文件中,慢慢编辑

改成这个 雏形就好了
FOR /F "tokens=1,20 delims=, " %a in (C:\users.txt) do dsadd user
# 使用 for 循环遍历文件
tokens 是要遍历的列数(这里的1,20意思是从 第1列遍历到第20列,加入第14列~第20列没有内容,那么不会影响,不会报错。)
delims= //是表明要以什么进行分割(类似于 python的 split()),这里是用 逗号进行分割
%a 表示从 %a 开始,第一个值为 %a,当遇到逗号时进行一次分割,然后这被分割后的值值为 %b,以此类推,从 %a、%
b、%c、%d .....3、查看 dsadd 命令的 选项:
dsadd 能够添加一些常用的选项,如果是 dsadd 选项中没有的命令,那么就需要使用 powershell
dsadd user /?
# 这里能够看到一些常用的
· 关于 %k、%L 等 在 .txt 文件中的显示:
先查看 .csv 文件:
可以看到这里有 A、B、C、D 等

使用 for 循环遍历时,我上面的命令会以 逗号“ ,”进行分隔,分隔出的 %a、%b 等刚好能够对应上 .csv 文件中 的 A、B、C等:
%a = A列
%b = B列
%c = C列
......4、最终命令为:
如果 OU 和 用户组组 少的话,就先 手动 创建 OU 和 用户组
(1)先创建 OU:
·方式一:使用for循环创建:(遍历 CSV文件)
FOR /F "tokens=1,20 delims=," %a in (C:\users.txt) do dsadd ou "%l,%m,%n"
# 因为这段 for 循环是以逗号分割,举例:
CSV 文件中 L 的内容是“ ou=Managers,dc=china,dc=net ”
而对于 for循环而言(因为是以逗号分割的):
%L = ou=Managers
%M = china
%N = net·方式二:手动创建:



(2)然后创建对应的用户组:
·方式一:使用for循环遍历 txt文件(CSV文件)创建 用户组:
FOR /F "tokens=1-20 delims=," %a in (C:\users.txt) do dsadd group "cn=%k,%l,%m,%n" (路径都在 L 列,但是其中有两个 逗号“ ,”因此就会被 分成三个,本来到 L 就会截至,但是对于 for 循环而言,就会多遍历出 %m 和 %n)
# 遍历 L 时,取其中一段举例:“ ou=Managers,dc=china,dc=net ” 这里面有 两个 逗号,这个内容本身是 L,
因此 :
%L = ou=Managers
%M = dc=china
%N = dc=net·方式二:手动创建:

在 “ Managers ” OU中创建 “ CN_Managers ” 用户组

在 “ Competitors ” OU 中,创建 “ CN_Competitors ” 用户组:

在 “ Visitors ” OU中,创建 “ CN_Visitors ” 用户组

(3)创建用户(使用 for 循环):
注意:dsadd 命令创建的用户 必须要指定用户在域内的 LDAP路径,例如要创建 user1,就要指定:cn=user1,cn=users,dc=domain,dc=com
语法:
# 如果都是常用的,那就使用 dsadd
FOR /F "tokens=1-20 delims=," %a in (C:\users.txt) do dsadd user "cn=[用户名],[该用户在域中的 LDAP路径,例如:ou=Users,dc=domain,dc=co]" -memberof "[用户组], [用户组在域中的 LDAP路径]" [-参数 (%值)] [-参数 (%值)] [-参数 (%值)] .....
## "cn=%a,cn=%k,%l,%m,%n" //指定用户(一般用户名都在最前面,也就是 %a 的位置)
## -memberof //指定 “ 隶属于 ”,就是指创建的这个用户隶属于指定的用户组
# 如果有些参数是 dsadd 命令中没有的,那么就使用 powershell 的:set-aduser 命令
FOR /F "tokens=1-20 delims=," %a in (C:\users.txt) do powershell Set-ADUser -Identity [用户名] [-参数 (%值)] [-参数 (%值)] ....
## Set-aduser 的命令参数可以进到 powershell 中用命令一个一个补全需要先使用 CMD 的 dsadd 命令,再使用 set-aduser 命令,因为当用户不存在时,dsadd 命令会自动创建用户,而 Set-Aduser 命令不会。
最终命令:
FOR /F "tokens=1-20 delims=," %a in (C:\users.txt) do dsadd user "cn=%a,%l,dc=skills,dc=com" -memberof "cn=%k,%l,%m,%n" -fn %b -ln %c -display %d -email %f -tel %g -title %i -pwd %e
# 因为一些字段 dsadd 中没有,就需要使用 powerhsell:
FOR /F "tokens=1-20 delims=," %a in (C:\users.txt) do powershell Set-ADUser -Identity '%a' -City '%h' //-Identity 有没有都不影响
## 如果用户名等字段有空格的话,需要使用 单引号 包裹(不能使用双引号)另一种写法:
FOR /F "tokens=1,2,3,4,5,6,7 delims=," %a in (C:\users.txt) do dsadd user "[LDAP路径]"
有多少列,在 tokens 字段就写多少·查看 powershell 参数:

也可以在 powershell 中直接补全查看