(批处理)域中添加/删除帐户工具
2009-02-10 13:00:14 来源:WEB开发网2年前自己学批处理时写的域中添加/删除帐户工具,现在在工作岗位上自己也在用,也没有什么技术含量,无非就是一些批处理命令和dsadd user、dsquery user等等一些常用命令。当然最常用的就是导入了,写的功能还是比较简单的,毕竟我本人才疏学浅,也希望高手能增加更有效的功能,给喜欢批处理的朋友使用吧。
使用前请先建立users.txt,格式如下:
比尔.盖茨 bill bill@microsoft.com password01@
参数注解: cn名称 -samid -upn - pwd
已经加入用户存在时,在加入时提示错误的判断,由于cmd命令下的薄弱,不得已引用了延时变量,这样就不能在有“!”字符,所以请在users.txt中设置密码时不要使用“!”。
默认下只支持二级域名(例:microsoft.com),如果你的域是(soft.microsoft.com)三级域那么请自行修改此批处理。
一些代码:
@echo off & setlocal ENABLEDELAYEDEXPANSION
:start
cls
title=在域中添加/删除帐户工具,BY sunhtcool
rem mode con cols=60 lines=50
color 0b
echo %date%
echo.
set menu=
echo [1]在域中批量添加账户
echo.
echo [2]在域中删除账户
echo.
echo [3]查找至少几个星期处于非活动状态(没有登录)的用户
echo.
echo [4]查找帐户被禁用的用户
echo.
echo [5]退出
echo.
set /p menu="请输入你的选择:"
if "%menu%" == "1" goto AddUsers
if "%menu%" == "2" goto DelUsers
if "%menu%" == "3" goto QueryUsersweeks
if "%menu%" == "4" goto QueryUsersDisabled
if "%menu%" == "5" goto :eof
echo 选择无效,请重新选择!
pause >nul
goto start
:AddUsers
cls
set Domain_name=
set /p Domain_name="请输入你的域名(例如:microsoft.com):"
for /f "tokens=1,2 delims=." %%a in ("%Domain_name%") do (set Domain_name1=%%a
set Domain_name2=%%b)
for /f "tokens=1-4 delims= " %%a in (users.txt) do (dsquery user -o dn |findstr /c:"%%a"
rem 监测错误变量值
echo !ERRORLEVEL! >>error.txt
if "!ERRORLEVEL!" == "0" (@echo 用户名 [%%a] 已经存在添加失败...
) else (@call :OK %%a %%b %%c %%d ...)
)
ping 127.0.0.1 -n 3 >nul
echo.
echo 命令完成,请按任意键退出...
pause >nul
start dsa.msc
goto:start
:OK
rem 延迟变量注意会抛弃所有!号
dsadd user "cn=%1,cn=users,dc=%Domain_name1%,dc=%Domain_name2%" -samid %2 -upn %3 -pwd %4 -pwdneverexpires yes -mustchpwd no >nul 2>nul
if not "!ERRORLEVEL!"=="0" (echo 用户Samid[%2]已经存在添加失败...) else (
echo 添加用户[%1]成功... )
echo.
goto :eof
:DelUsers
cls
echo [1]删除容器中单个用户
echo.
echo [2]删除组织单位中(OU)单个用户
echo.
echo [3]批量删除用户(不包括删除OU组织单位)
echo.
echo [4]批量删除用户(包括删除OU组织单位)
echo.
echo [5]返回上一个目录
set DelUs=
set /p DelUs="请输入你的选择:"
if "%DelUs%" == "1" goto Del_Singel
if "%DelUs%" == "2" goto Del_Ou
if "%DelUs%" == "3" goto Del_OuS1
if "%DelUs%" == "4" goto Del_OuS2
if "%DelUs%" == "5" goto start
echo 选择无效,请重新选择!
goto DelUsers
:Del_Singel
cls
set Singel=
set Cn_1=
set Domain_pname=
set /p Singel="请输入用户的DN(可分辨名称)(例如:John Smith):"
if "%Singel%" == "" echo 用户名不能为空,请重新输入! & pause>nul & goto Del_Singel
for /f "tokens=*" %%t in ('dsquery user -o dn ^|find /i "%Singel%"' ) do set Uesr=%%~t
echo %Uesr%
if "%Uesr%" == "" echo 此用户名不存在,请重新输入! & pause>nul & goto Del_Singel
pause
set /p Cn_1="请输入用户所在的容器名称(例如:users):"
if "%Cn_1%" == "" echo 容器名称不能为空,请重新输入! & pause>nul & goto Del_Singel
set /p Domain_pname="请输入你的域名(例如:microsoft.com):"
if "%Domain_pname%" == "" echo 域名不能为空,请重新输入! & pause>nul & goto Del_Singel
for /f "tokens=1,2 delims=." %%a in ("%Domain_pname%") do (set Domain_namep1=%%a
set Domain_namep2=%%b)
dsrm "cn=%Singel%,cn=%Cn_1%,dc=%Domain_namep1%,dc=%Domain_namep2%" -noprompt >nul
赞助商链接