- @Echo off
- setlocal
- echo 当前时间:%date% %time% >>C:\Users\Administrator\Desktop\adlog.txt
- set domainname=ldap.com
- set Userpassword=1qaz!QAZ
- set OuName=huawei
-
- echo 此脚本用于批量建立用户.
- echo 使用同目录下users.csv作为输入数据。
-
- :Start
- for /f "eol=; tokens=1,2,3,4,5,6 delims=." %%a in ("%domainname%") do set ldapname1=%%a&set ldapname2=%%b&set ldapname3=%%c&set ldapname4=%%d&set ldapname5=%%e&set ldapname6=%%f
- set domain=dc=%ldapname1%,dc=%ldapname2%,dc=%ldapname3%,dc=%ldapname4%,dc=%ldapname5%,dc=%ldapname6%
-
- if DEFINED ldapname1 set ldap=dc=%ldapname1%
- if DEFINED ldapname2 set ldap=%ldap%,dc=%ldapname2%
- if DEFINED ldapname3 set ldap=%ldap%,dc=%ldapname3%
- if DEFINED ldapname4 set ldap=%ldap%,dc=%ldapname4%
- if DEFINED ldapname5 set ldap=%ldap%,dc=%ldapname5%
- if DEFINED ldapname6 set ldap=%ldap%,dc=%ldapname6%
-
- Rem echo DomainName: %domainname%
- Rem echo LdapName: %ldap%
-
- Echo DEL user:
- FOR /F "eol=; tokens=1,2,3,4,5,6,7,8,9,10,* delims=, " %%a in (usersadd.csv) do dsquery user -samid *%%e | dsrm -noprompt -c>>C:\Users\Administrator\Desktop\adlog.txt
- FOR /F "eol=; tokens=1,2,3,4,5,6,7,8,9,10,* delims=, " %%a in (usersadd.csv) do dsquery user cn=%%c,ou=%%b,ou=%%a,ou=%OuName%,%ldap% | dsrm -noprompt -c>>C:\Users\Administrator\Desktop\adlog.txt
-
- Echo ADD user:
-
- FOR /F "eol=; tokens=1,2,3,4,5,6,7,8,9,10,* delims=, " %%a in (usersadd.csv) do dsadd user cn=%%c,ou=%%b,ou=%%a,ou=%OuName%,%ldap% -samid %%j -upn %%j@%domainname% -display %%c -mi %%i -pwd %Userpassword% -tel %%e -title %%d -dept %%f -mobile %%g -iptel %%h -company %%b>>C:\Users\Administrator\Desktop\adlog.txt
-
- :DisplayInfo
- echo.
- echo.
- if %errorlevel% EQU -2147019886 echo 用户已存在,不能重复建立.&echo.&pause&goto end
- if %errorlevel% NEQ 0 echo 建立用户失败.&echo.&pause&goto end
- if %errorlevel% EQU 0 echo 建立用户成功.&echo.&pause>>C:\Users\Administrator\Desktop\adlog.txt
- reg add "hklm\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v DefaultDomainName /t REG_SZ /d %domainname% /f >nul
-
- :end
- rem echo %errorlevel% &pause
- cls
- endlocal
- echo on
复制代码 大佬们,我这个BAT是来操作Windows AD,AD用来做IP话机的通讯录 ,当电话号码使用者改变时候,用这个BAT来处理。按照变更信息的号码先查找一遍,如果有这个号码记录就删除,然后增加;查找的时候如果没有记录也增加。
现在在del user 这一步遇到了问题,一但变更信息中有空格字段就查找报错,直接执行后面的删除动作了。会一直在删除,会把所有OU的记录全删除掉
现有3个问题求助:
1、在删除这一步能不能加个判断,查找报错了就不执行dsrm删除操作,,这个问题首要最重要
2、日志输出的问题,我在每个步骤后面做了追加输出到adlog.txt >>C:\Users\Administrator\Desktop\adlog.txt 这个可以保存删除和增加的信息,但是删除和增加的时候在cmd窗口看不到,输出到后面adlog.txt里面,当前cmd窗口看不到删除和增加的内容
3、BAT处理能不能优化一下。
需要变更的信息,如下例:
总部 人事部 马民 经理 5555 人事部 null 5555 mm mamin5555
总部 财务部 姜昱竹 职员 5431 财务部 null 5431 jyz jiangyuzhu5431
北京 技术部 刘泽群 主管 106661 技术部 null 106661 lzq liuzequn106661
上海 客服部 张煜焓 一级客服 213332 客服部 null 213332 zyh zhangyuhan213332
adlog.txt的内容
请按任意键继续. . . 当前时间:2022-12-05 10:27:55.53
dsadd 成功:cn=马民,ou=人事部,ou=总部,ou=huawei,dc=ldap,dc=com
dsadd 成功:cn=姜昱竹,ou=财务部,ou=总部,ou=huawei,dc=ldap,dc=com
dsadd 成功:cn=刘泽群,ou=技术部,ou=北京,ou=huawei,dc=ldap,dc=com
dsadd 成功:cn=张煜焓,ou=客服部,ou=上海,ou=huawei,dc=ldap,dc=com
请按任意键继续. . . 当前时间:2022-12-05 14:38:12.31
dsrm 成功:CN=马民,OU=人事部,OU=总部,OU=huawei,DC=ldap,DC=com
dsrm 成功:CN=姜昱竹,OU=财务部,OU=总部,OU=huawei,DC=ldap,DC=com
dsrm 成功:CN=刘泽群,OU=技术部,OU=北京,OU=huawei,DC=ldap,DC=com
当前时间:2022-12-05 14:38:32.78
dsrm 成功:CN=张煜焓,OU=客服部,OU=上海,OU=huawei,DC=ldap,DC=com
dsadd 成功:cn=马民,ou=人事部,ou=总部,ou=huawei,dc=ldap,dc=com
dsadd 成功:cn=姜昱竹,ou=财务部,ou=总部,ou=huawei,dc=ldap,dc=com
dsadd 成功:cn=刘泽群,ou=技术部,ou=北京,ou=huawei,dc=ldap,dc=com
dsadd 成功:cn=张煜焓,ou=客服部,ou=上海,ou=huawei,dc=ldap,dc=com
请按任意键继续. . . |