标题: [网络连接] 批处理批量配置windows ad 求助 [打印本页]
作者: cchyswy 时间: 2022-12-6 09:26 标题: 批处理批量配置windows ad 求助
- @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
请按任意键继续. . .
作者: Batcher 时间: 2022-12-6 15:38
回复 1# cchyswy
1-1.bat- setlocal enabledelayedexpansion
- 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%
- if !errorlevel! equ 0 (
- dsquery user cn=%%c,ou=%%b,ou=%%a,ou=%OuName%,%ldap% | dsrm -noprompt -c>>C:\Users\Administrator\Desktop\adlog.txt
- ) else (
- goto :end
- )
- )
复制代码
作者: Batcher 时间: 2022-12-6 15:42
2-1.bat- for /f "eol=; tokens=1,2,3,4,5,6,7,8,9,10,* delims=, " %%a in (usersadd.csv) do (
- echo 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
- 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
- )
复制代码
作者: Batcher 时间: 2022-12-6 15:48
回复 1# cchyswy
3-1.bat- setlocal enabledelayedexpansion
- for /f "eol=; tokens=1,2,3,4,5,6,7,8,9,10,* delims=, " %%a in (usersadd.csv) do (
- set "StrCN=%%c"
- REM 删除姓名中间可能出现的空格
- set "StrCN=!StrCN: =!"
- dsquery user cn=!StrCN!,ou=%%b,ou=%%a,ou=%OuName%,%ldap%
- if !errorlevel! equ 0 (
- dsquery user cn=!StrCN!,ou=%%b,ou=%%a,ou=%OuName%,%ldap% | dsrm -noprompt -c>>C:\Users\Administrator\Desktop\adlog.txt
- ) else (
- goto :end
- )
- )
复制代码
作者: Batcher 时间: 2022-12-6 15:54
回复 1# cchyswy
3-2.bat
脚本中出现了5次C:\Users\Administrator\Desktop\adlog.txt
可以考虑把它定义成一个变量- set "LogFile=C:\Users\Administrator\Desktop\adlog.txt"
- >>"%LogFile%" echo 当前时间:%date% %time%
复制代码
作者: cchyswy 时间: 2022-12-8 10:43
回复 cchyswy
1-1.bat
Batcher 发表于 2022-12-6 15:38
判断已经生效,在else 后面加goto end ,当查找有错误时,直接结束。
作者: cchyswy 时间: 2022-12-8 10:46
回复 3# Batcher
将echo部分加工一下,和删除显示的信息一样格式
只显示了这一部分 echo cn=%%c,ou=%%b,ou=%%a,ou=%OuName%,%ldap%
CMD窗口显示的内容 。ADD增加和DEL删除的一样
此脚本用于批量建立用户.
使用同目录下users.csv作为输入数据。
DEL user:
"CN=马龙,OU=人事部,OU=总部,OU=huawei,DC=ldap,DC=com"
ADD user:
cn=马龙,ou=人事部,ou=总部,ou=huawei,dc=ldap,dc=com
建立用户成功.
请按任意键继续. . .
作者: cchyswy 时间: 2022-12-8 10:56
回复 5# Batcher
设置adlog.txt为变量,下面是现在的脚本- @Echo off
- setlocal enabledelayedexpansion
- set domainname=ldap.com
- set Userpassword=1qaz!QAZ
- set OuName=huawei
- set "LogFile=C:\Users\Administrator\Desktop\adlog.txt"
- echo 当前时间:%date% %time%>>"%LogFile%"
-
- 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 cn=%%c,ou=%%b,ou=%%a,ou=%OuName%,%ldap%
- if !errorlevel! equ 0 (
- dsquery user cn=%%c,ou=%%b,ou=%%a,ou=%OuName%,%ldap% | dsrm -noprompt -c>>"%LogFile%"
- ) else (
- goto end
- )
- )
- Echo ADD user:
-
- for /f "eol=; tokens=1,2,3,4,5,6,7,8,9,10,* delims=, " %%a in (usersadd.csv) do (
- echo cn=%%c,ou=%%b,ou=%%a,ou=%OuName%,%ldap%
- 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>>"%LogFile%"
- )
-
- :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
- 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
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |