批量添加用户、批量修改密码的BAT脚本,根据自身环境更改实际AD域名。
列如:ABC.COM/财务部/,ABC.COM就是你真实环境里的AD域名。
usersadd.csv 用户模板(ANSI编码),跟脚本存
放同一目录。usersadd.csv格式必须如图,文件名自己看脚本自己改,如果懂dsadd命令,可以自行修改脚本,比如添加电话号码、职位等等;
@echo off & setlocal ENABLEDELAYEDEXPANSION
mode con cols=120 lines=30 & color 3f
set current_dir=%~dp0
cd /d %current_dir%
set UsersFile=usersadd.csv
title 域控管理工具v1.2
rem 判断是否以管理员运行
net.exe session 1>NUL 2>NUL && ( goto 主菜单 ) || ( goto not_admin )
:not_admin
echo.
echo.
echo "*********请以管理员权限运行此脚本*********"
echo.
echo.
pause
exit
:主菜单
cls
set menu1=
rem usersadd.csv 必须是ANSI编码,usersadd.csv必须严格按模板文件来添加用户信息
rem 脚本必须以管理员权限运行
rem 脚本必须保存为ANSI编码
echo.
echo *************************************************************************************
echo 当前脚本运行目录:%current_dir%
echo.
echo.
echo ^*准备好usersadd.csv 用户模板(ANSI编码),跟脚本存放同一目录
echo.
echo.
echo.
echo [1] 检查域账号是否已经存在
echo.
echo [2] 批量修改域用户密码
echo.
echo [3] 批量添加域用户
echo.
echo [4] 退出
echo.
echo *************************************************************************************
echo.
set /p menu1=" 请输入你的选择1-4:"
if "%menu1%" == "1" goto CheckUser
if "%menu1%" == "2" goto UserChangePwd
if "%menu1%" == "3" goto input_department
if "%menu1%" == "4" goto :eof
echo.
echo ----选择无效,请重新选择....
pause >nul
goto 主菜单
:批量添加域用户菜单
cls
set menu2=
echo.
echo ************************批量添加域用户***********************************************
echo.
echo ^*请确认OU部门,批量添加的域用户将存放在此OU下
echo ^*: %NewDepartment%
echo.
echo ^*域用户密码必须符合密码复杂度
echo.
echo [1] 正式员工(有员工号)
echo.
echo [2] 外包人员(没有员工号)
echo.
echo [3] 返回
echo.
echo *************************************************************************************
echo.
echo.
set /p menu2="请输入你的选择1-3:"
if "%menu2%" == "1" goto regularemployee
if "%menu2%" == "2" goto Noemployee
if "%menu2%" == "3" goto 主菜单
echo.
echo ----选择无效,请重新选择...
pause >nul
goto 批量添加域用户菜单
:input_department
cls
set InputDepartment=
echo.
echo ********************输入批量添加域用户的部门OU***************************************
echo.
echo 例如:ABC.COM/华南区/财务部/
echo.
echo 则输入:财务部
echo.
echo *************************************************************************************
echo.
set /P InputDepartment="----请输入部门OU :"
if "%InputDepartment%"=="" (
echo.
echo "----请输入有效信息"
pause >nul
goto input_department )
for /f "tokens=*" %%i in ('dsquery ou domainroot -name "%InputDepartment%"') do set Department=%%i
if "!Department!"=="" (
echo.
echo 没有找到部门OU:%InputDepartment%
pause >nul
goto input_department ) else (
set NewDepartment=%Department:~1,-1%
echo.
echo 搜索到OU:!NewDepartment!
echo 请按任意键确认 )
pause >nul
goto 批量添加域用户菜单
:regularemployee
rem 正式员工批量开通域账号
call :Usermuspwd
if not exist %UsersFile% (
echo.
echo %UsersFile%模板文件不存在,请创建该文件
echo 请按任意键返回...
pause >nul
goto 批量添加域用户菜单
) else (
echo "正在运行...请耐心等待,你可以Ctrl+c 中断脚本运行"
for /f "skip=1 tokens=1-6 delims=," %%a in (%UsersFile%) do (
dsadd user "cn=%%c,%NewDepartment%" -samid %%d -upn %%d@ABC.COM -ln %%a -fn %%b -display %%c -pwd %%e -empid %%f -mustchpwd %muspwd% >nul 2>nul
if not "!ERRORLEVEL!"=="0" ( echo %%d 添加失败 ) else ( echo %%d 添加成功 )
)>>usersadd.log
)
echo "输出日志文件%~dp0usersadd.log"
echo 添加用户完毕,请按任意键退出...
pause >nul
exit
:Noemployee
rem 外包人员批量开通域账号
call :Usermuspwd
if not exist %UsersFile% (
echo.
echo %UsersFile%模板文件不存在,请创建该文件
echo 请按任意键返回...
pause >nul
goto 批量添加域用户菜单
) else (
echo "正在运行...请耐心等待,你可以Ctrl+c 中断脚本运行"
for /f "skip=1 tokens=1-6 delims=," %%a in (%UsersFile%) do (
dsadd user "cn=%%c,%NewDepartment%" -samid %%d -upn %%d@ABC.COM -ln %%a -fn %%b -display %%c -pwd %%e -mustchpwd %muspwd% >nul 2>nul
if not "!ERRORLEVEL!"=="0" ( echo %%d 添加失败 ) else ( echo %%d 添加成功 )
)>>usersadd.log
)
echo "输出日志文件%~dp0usersadd.log"
echo 添加用户完毕,请按任意键退出...
pause >nul
exit
:CheckUser
rem 检查域账号是否已经存在
if not exist %UsersFile% (
echo %UsersFile%模板文件不存在,请创建该文件!
pause
goto 主菜单
) else (
echo "正在运行...请耐心等待,你可以Ctrl+c 中断脚本运行"
for /f "skip=1 tokens=1-6 delims=," %%a in (%UsersFile%) do dsquery user -samid %%d -o samid >>已有域账号.txt
)
echo.
echo 检查完毕,输出"%~dp0已有域账号.txt"
echo 请按任意键退出...
pause >nul
exit
:UserChangePwd
rem 批量修改域用户密码
call :Usermuspwd
if not exist %UsersFile% (
echo %UsersFile%模板文件不存在,请创建该文件!
echo 请按任意键返回...
pause >nul
goto 主菜单
) else (
echo "正在运行...请耐心等待,你可以Ctrl+c 中断脚本运行"
for /f "skip=1 tokens=1-6 delims=," %%a in (%UsersFile%) do (
dsquery user -samid %%d | dsmod user -pwd %%e -mustchpwd %muspwd% >nul 2>nul
if not "!ERRORLEVEL!"=="0" ( echo %%d 修改失败 ) else ( echo %%d 修改成功 )
)>>ChangePwd.log
)
echo.
echo 检查完毕,输出"%~dp0ChangePwd.log"
echo 请按任意键退出...
pause >nul
exit
:Usermuspwd
rem 请确认用户下次登陆时[是否]必须更改密码
cls
set muspwd=
set menu3=
echo.
echo.
echo *********强制用户下次登陆时[是否]必须更改密码*********
echo.
echo [1] 是 Yes
echo.
echo [2] 否 No
echo.
echo ******************************************************
echo.
set /p menu3="请输入你的选择1-2:"
if "%menu3%" == "1" set muspwd=yes && goto :eof
if "%menu3%" == "2" set muspwd=no && goto :eof
echo.
echo ----选择无效,请重新选择...
pause >nul
goto Usermuspwd