(批处理)域中添加/删除帐户工具

[摘要]  2年前自己学批处理时写的域中添加/删除帐户工具,现在在工作岗位上自己也在用,也没有什么技术含量,无非就是一些批处理命令和dsadd user、dsquery user等等一些常用命令。当然最常用的就是导入了,写的功能还是比较简单的,毕竟我本人才疏学浅,也希望高手能增加更有效的功能,给喜欢批处理的朋友使用吧。

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

。。。。。。。。。

域中添加删除帐户工具: http://bbs.chinaitlab.com/thread-317569-1-1.html




免责声明:

本站系本网编辑转载,会尽可能注明出处,但不排除无法注明来源的情况,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与本网联系, 来信: liujun@soft6.com 我们将在收到邮件后第一时间删除内容!

[声明]本站文章版权归原作者所有,内容为作者个人观点,不代表本网站的观点和对其真实性负责,本站拥有对此声明的最终解释权。