(批處理)域中添加/刪除帳戶工具

字號(hào):

使用前請(qǐng)先建立users.txt,格式如下:
    比爾.蓋茨bill bill@microsoft.compassword01@
    參數(shù)注解: cn名稱-samid -upn - pwd
    已經(jīng)加入用戶存在時(shí),在加入時(shí)提示錯(cuò)誤的判斷,由于cmd命令下的薄弱,不得已引用了延時(shí)變量,這樣就不能在有“!”字符,所以請(qǐng)?jiān)趗sers.txt中設(shè)置密碼時(shí)不要使用“!”。
    默認(rèn)下只支持二級(jí)域名(例:microsoft.com),如果你的域是(soft.microsoft.com)三級(jí)域那么請(qǐng)自行修改此批處理。
    一些代碼:
    @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]查找至少幾個(gè)星期處于非活動(dòng)狀態(tài)(沒有登錄)的用戶
    echo.
    echo [4]查找?guī)舯唤玫挠脩?BR>    echo.
    echo [5]退出
    echo.
    set /p menu="請(qǐng)輸入你的選擇:"
    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 選擇無效,請(qǐng)重新選擇!
    pause >nul
    goto start
    :AddUsers
    cls
    set Domain_name=
    set /p Domain_name="請(qǐng)輸入你的域名(例如: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 監(jiān)測(cè)錯(cuò)誤變量值
    echo !ERRORLEVEL! >>error.txt
    if "!ERRORLEVEL!" == "0" (@echo 用戶名 [%%a] 已經(jīng)存在添加失敗...
    ) else (@call :OK %%a %%b %%c %%d ...)
    )
    ping 127.0.0.1 -n 3 >nul
    echo.
    echo 命令完成,請(qǐng)按任意鍵退出...
    pause >nul
    start dsa.msc
    goto:start
    :OK
    rem 延遲變量注意會(huì)拋棄所有!號(hào)
    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]已經(jīng)存在添加失敗...) else (
    echo 添加用戶[%1]成功... )
    echo.
    goto :eof
    :DelUsers
    cls
    echo [1]刪除容器中單個(gè)用戶
    echo.
    echo [2]刪除組織單位中(OU)單個(gè)用戶
    echo.
    echo [3]批量刪除用戶(不包括刪除OU組織單位)
    echo.
    echo [4]批量刪除用戶(包括刪除OU組織單位)
    echo.
    echo [5]返回上一個(gè)目錄
    set DelUs=
    set /p DelUs="請(qǐng)輸入你的選擇:"
    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 選擇無效,請(qǐng)重新選擇!
    goto DelUsers
    :Del_Singel
    cls
    set Singel=
    set Cn_1=
    set Domain_pname=
    set /p Singel="請(qǐng)輸入用戶的DN(可分辨名稱)(例如:John Smith):"
    if "%Singel%" == "" echo 用戶名不能為空,請(qǐng)重新輸入! & 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 此用戶名不存在,請(qǐng)重新輸入! & pause>nul & goto Del_Singel
    pause
    set /p Cn_1="請(qǐng)輸入用戶所在的容器名稱(例如:users):"
    if "%Cn_1%" == "" echo 容器名稱不能為空,請(qǐng)重新輸入! & pause>nul & goto Del_Singel
    set /p Domain_pname="請(qǐng)輸入你的域名(例如:microsoft.com):"
    if "%Domain_pname%" == "" echo 域名不能為空,請(qǐng)重新輸入! & 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