WEB开发网
开发学院操作系统windows 2008 (批处理)域中添加/删除帐户工具 阅读

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

 2009-02-10 13:00:14 来源:WEB开发网   
核心提示:2年前自己学批处理时写的域中添加/删除帐户工具,现在在工作岗位上自己也在用,(批处理)域中添加/删除帐户工具,也没有什么技术含量,无非就是一些批处理命令和dsadd user、dsquery user等等一些常用命令,所以请在users.txt中设置密码时不要使用“!”,默认下只支持二级域名(例

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

1 2  下一页

Tags:批处理 添加 删除

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接