Windows域控批量创建域用户,并授权组
# Windows域控批量创建域用户,并授权组> 对于没有开发能力的公司管理域控,这个脚本可以节省很多时间,避免出现的一些错误。
1. 创建一个csv的模板文件
| samid | display | ou-1 | dc-1 | dc-2 | pwd | dept | group |
| ----- | ------- | -------- | ---- | ---- | -------- | ------ | ------------- |
| 1 | 刘一 | 技术中心 | test | com| 12345678 | 研发部 | Domain Admins |
| 2 | 刘二 | 测试中心 | test | com| 12345678 | 研发部 | Domain Admins |
| 3 | 刘三 | 开发中心 | test | com| 12345678 | 研发部 | Domain Admins |
| 4 | 刘四 | 开发中心 | test | com| 12345678 | 研发部 | Domain Admins |
| 5 | 刘五 | 开发中心 | test | com| 12345678 | 研发部 | Domain Admins |
| 6 | 刘六 | 测试中心 | test | com| 12345678 | 研发部 | Domain Admins |
| 7 | 刘七 | 测试中心 | test | com| 12345678 | 研发部 | Domain Admins |
| 8 | 刘八 | 技术中心 | test | com| 12345678 | 研发部 | Domain Admins |
2. 编写一个bat批处理
```powershell
@echo off
echo 获取Administrator权限
cacls.exe "%SystemDrive%\System Volume Information" >nul 2>nul
if %errorlevel%==0 goto Admin
if exist "%temp%\getadmin.vbs" del /f /q "%temp%\getadmin.vbs"
echo Set RequestUAC = CreateObject^("Shell.Application"^)>"%temp%\getadmin.vbs"
echo RequestUAC.ShellExecute "%~s0","","","runas",1 >>"%temp%\getadmin.vbs"
echo WScript.Quit >>"%temp%\getadmin.vbs"
"%temp%\getadmin.vbs" /f
if exist "%temp%\getadmin.vbs" del /f /q "%temp%\getadmin.vbs"
exit
:Admin
echo 成功取得Administrator权限
for /f "skip=1 eol=; tokens=1-9delims=," %%a in (G:\domin\domainuser.csv) do dsadd user "cn=%%b,OU=%%c,dc=%%d,dc=%%e" -samid "%%a"-upn "%%a@chenfan.com"-display "%%b"-ln "%%b" -pwd %%f -dept %%c
timeout /nobreak /t 3
for /f "skip=1 eol=; tokens=1-9delims=," %%a in (G:\domin\domainuser.csv) do net group"Domain Admins"%%a /add
pause
```
以上代码大概的意思是,先获取管理员权限,然后循环读取刚刚创建的csv文件,并逐一复制创建账号,等等3秒后循环读取csv文件逐一授权域管理员权限。具体命令与命令参数如下:
- `skip=1` 跳过第一行数据,也就是跳过标题
- `eol;` 注释行的符号为`;`
- `tokens=1-9` 每次提取的变量个数(可以往多了写,不影响的)
- `delims,` 每个变量的分割符号是 `,`
- `%%a in` 引用 `%%a`变量为第一列的值,`%%b`则是第二列的值依次类推 ,`in` 后面的括号则是csv模板文件的路径地址
- `do` 这后面跟的就是你需要循环执行的命令,跟其他的开发语言类似
- `"cn=%%b,OU=%%c,dc=%%d,dc=%%e"`这里一一对应模板中的二、三、四、五列中的值,cn你可以理解为你用户的显示名,ou则为组织单位(如果存在多级组织单位的则一次层级写多个ou,先小再大的顺序。例如你需要将你的用户创建在开发中心的开发组那么这里就需要写两个ou,顺序则是 `ou=开发组,ou=开发中心`),dc则为你的域名(例如我的域名是`test.com`,那么写的格式则是`dc=test,dc=com`)
- `-samid` 用户的登录名(Windows 2000以前版本格式)
- `-upn` 用户登录名
- `-display` 用户显示名称
- `-ln` 用户的姓氏
- `-pwd` 指定用户密码
- `-dept` 用户组织中的部门
`dsadd user`完整的命令参数可参考官方文档:[点击前往查看](https://docs.microsoft.com/zh-cn/previous-versions/windows/it-pro/windows-server-2012-R2-and-2012/cc731279(v=ws.11))
3. 演示测试
> 我这里就批量创建两个账号做一个测试演示。
3.1 创建csv文件
| samid | display | ou-1 | dc-1 | dc-2 | pwd | dept | group |
| ----- | ------- | -------- | ---- | ---- | -------- | ------ | ------------- |
| 11999 | 刘九 | 技术中心 | test | com| 12345678 | 研发部 | Domain Admins |
| 11998 | 刘八 | 技术中心 | test | com| 12345678 | 研发部 | Domain Admins |
3.2双击运行bat批处理
3.3创建后效果如下图,因另外一个账号没什么不同我就不一一截图了。参数不懂的可以看我发的图来对应起来。
!(https://image.98record.top/Typora/2021/08/1628840114-747.png)
!(https://image.98record.top/Typora/2021/08/1628840166-be0.png)
!(https://image.98record.top/Typora/2021/08/1628840213-bd7.png)
!(https://image.98record.top/Typora/2021/08/1628840255-636.png) 大佬,请问一下,是不是只有WINDOWS SERVER操作系统,才能多用户同时登陆? 用在部署上面,是一个提高效率的办法。感谢分享。 雾都孤尔 发表于 2021-8-18 11:16
用在部署上面,是一个提高效率的办法。感谢分享。
感谢肯定{:1_893:} 不会用啊。。。 挺好的,收藏一下 提高效率 山上石 发表于 2021-8-18 11:45
不会用啊。。。
bat脚本复制粘贴,创建一个csv表格文件。模板就用我的 留存了,感谢! jerryfj 发表于 2021-8-18 14:20
留存了,感谢!
感谢支持 MARK一下,说不定以后用得上