虽然,我看起来像是地球上最聪明的人之一,但我并不精通脚本或编程。
我当前的基本设置是:
- Windows 2003 即将成为 2008 R2 AD 架构
- XP SP3 工作站很快就会成为 Windows 7(比如在一两年内)。
这是我试图完全自动化本文中详述的域加入过程的图像。
在使用 GhostCast 服务器或 GSS 2.5 版的 Ghost 控制台对映像进行 SysPrep 后,我使用了几个批处理脚本和几个 vbs 文件来运行。基本上,WSNAME 通过文本文件中的 mac 地址重命名计算机并重新启动。
重命名计算机后,程序必须更新其 SQL 数据库实例,然后计算机必须再次重新启动。
重新启动后,我希望此脚本执行以下 ALL AUTOMATED:
首选使用 netdom 的批处理脚本。
- 通过字符串或任何适当的方式查询计算机名称
- 如果计算机名称与字符串匹配,则将此计算机加入此域和 OU,然后重新启动,脚本应该结束或
- 如果计算机名称不匹配,请转到下一条语句以检查匹配并将此计算机加入此域和 OU,然后重新启动并且脚本应该结束或
- 如果没有找到匹配的字符串,递归语句并将计算机加入默认 OU,然后重新启动,脚本应该结束
本质上,所有计算机都将加入指定 OU 下的域。
重要的东西已经改变以保护无辜者!
这个尝试是从几个网站汇集而来的,但主要来自Find out a environment variable contains a substring。如果使用 vbs 或任何其他程序可以更好地完成此操作,请提供文件。
我也明白,当作为批处理脚本运行时,单个百分号 (%) 可能必须是双百分号 (%%)。
为了让这个东西也能正常工作,我还有大约四个其他文件迭代。所以在过去的几周里,我一直在徒劳地尝试。
主要问题似乎是获得正确的语法来根据findstr
命令查询计算机名。我可以操纵这些语句,让它们通过命令行手动工作,但不能作为一个批处理脚本。
经过更多研究,似乎也可能使用 Set 命令为搜索字符串设置变量也可能是合理的。其中一些计算机属于同一个 OU,因此只要考虑到正确的查询字符串,就可以修改或省略其中的一些语句。
请接受并修改它,甚至完全丢弃它。我只想要一些可以完美运行的东西。非常感谢任何和所有帮助。
此脚本手动工作,但显然它只是交互式的。
::netdom join %computername% /Domain:handsome.and.smart.com /userd:delegate /passwordd:topsecret /OU:"ou=Secret Stations,ou=Domain Computers,dc=handsome,dc=and,dc=smart,dc=com" /REBOOT
echo.%computername%|findstr /B /I /C:"12" >nul 2>&1 && goto move_to_XPOU || goto move_to_secretOU
echo.%computername%|findstr /B /I /C:"745" >nul 2>&1 && goto move_to_secretOU || goto move_to_85OU
echo.%computername%|findstr /B /I /C:"85-712" >nul 2>&1 && goto move_to_85OU || goto move_to_859OU
echo.%computername%|findstr /B /I /C:"85-9" >nul 2>&1 && goto move_to_859OU || goto move_to_ctdOU
echo.%computername%|findstr /B /I /C:"CTD" >nul 2>&1 && goto move_to_ctdOU || goto move_to_coajOU
echo.%computername%|findstr /B /I /C:"COAJ" >nul 2>&1 && goto move_to_coajOU || goto move_to_65OU
echo.%computername%|findstr /B /I /C:"65" >nul 2>&1 && goto move_to_65OU || goto move_to_16
echo.%computername%|findstr /B /I /C:"16" >nul 2>&1 && goto move_to_16 || goto move_to_104OU
echo.%computername%|findstr /B /I /C:"104" >nul 2>&1 && goto move_to_104OU || goto move_to_secretOU
echo.%computername%|findstr /B /I /C:"Sec" >nul 2>&1 && goto move_to_secretOU || goto move_to_scscOU
echo.%computername%|findstr /B /I /C:"SCSC" >nul 2>&1 && goto move_to_scscOU || goto move_to_defaultOU
echo.%computername%|findstr /B /I /C:"740" >nul 2>&1 && goto move_to_defaultOU || goto end
::If name does not match any strings, place computer in default container.
echo.%computername%|findstr /B /I /C:"" >nul 2>&1 && goto move_to_default_OU || goto end
:move_to_XPOU
echo.%computername%|findstr /B /I /C:"12" >nul 2>&1 && netdom JOIN %computername% /Domain:handsome.and.smart.com /userd:delegate /passwordd:topsecret /OU:"ou=XP Client,ou=Domain Computers,dc=handsome,dc=and,dc=smart,dc=com" /REBOOT && goto end || goto move_to_ghostOU
:move_to_secretOU
echo.%computername%|findstr /B /I /C:"745" >nul 2>&1 && netdom JOIN %computername% /Domain:handsome.and.smart.com userd:delegate /passwordd:topsecret /OU:"ou=Secret Stations,ou=Domain Computers,dc=handsome,dc=and,dc=smart,dc=com" /REBOOT:34 && goto end || goto move_to_puka
:move_to_85OU
echo.%computername%|findstr /B /I /C:"85-712" >nul 2>&1 && netdom JOIN %computername% /Domain:handsome.and.smart.com /userd:delegate /passwordd:topsecret /OU:"ou=85 COMPUTERS,ou=Domain Computers,dc=handsome,dc=and,dc=smart,dc=com" /REBOOT && goto end || goto move_to_859OU
:move_to_859OU
echo.%computername%|findstr /B /I /C:"85-9" >nul 2>&1 && netdom JOIN %computername% /Domain:handsome.and.smart.com /userd:delegate /passwordd:topsecret /OU:"OU=859 CLIENTS,OU=BLDG 85 OU,dc=handsome,dc=and,dc=smart,dc=com" /REBOOT && goto end || goto move_to_ctdOU
:move_to_ctdOU
echo.%computername%|findstr /B /I /C:"CTD" >nul 2>&1 && netdom JOIN %computername% /Domain:handsome.and.smart.com /userd:delegate /passwordd:topsecret /OU:"ou=CTD COMPUTERS,ou=Domain Computers,dc=handsome,dc=and,dc=smart,dc=com" /REBOOT && goto end || goto move_to_coajOU
:move_to_coajOU
echo.%computername%|findstr /B /I /C:"COAJ" >nul 2>&1 && netdom JOIN %computername% /Domain:handsome.and.smart.com /userd:delegate /passwordd:topsecret /OU:"ou=COAJ COMPUTERS,ou=Domain Computers,dc=handsome,dc=and,dc=smart,dc=com" /REBOOT && goto end || goto move_to_65OU
:move_to_65OU
echo.%computername%|findstr /B /I /C:"65" >nul 2>&1 && netdom JOIN %computername% /Domain:handsome.and.smart.com /userd:delegate /passwordd:topsecret /OU:"ou=XP Client,ou=Domain Computers,dc=handsome,dc=and,dc=smart,dc=com" /REBOOT && goto end || goto move_to_16
:move_to_16
echo.%computername%|findstr /B /I /C:"16" >nul 2>&1 && netdom JOIN %computername% /Domain:handsome.and.smart.com /userd:delegate /passwordd:topsecret /OU:"ou=XP Client,ou=Domain Computers,dc=handsome,dc=and,dc=smart,dc=com" /REBOOT && goto end || goto move_to_104OU
:move_to_104OU
echo.%computername%|findstr /B /I /C:"104" >nul 2>&1 && netdom JOIN %computername% /Domain:handsome.and.smart.com /userd:delegate /passwordd:topsecret /OU:"ou=104 Computers,dc=handsome,dc=and,dc=smart,dc=com" /REBOOT && goto end || goto move_to_scscOU
:move_to_scscOU
echo.%computername%|findstr /B /I /C:"SCSC" >nul 2>&1 && netdom JOIN %computername% /Domain:handsome.and.smart.com /userd:delegate /passwordd:topsecret /OU:"ou=SCSC COMPUTERS,ou=Domain Computers,dc=handsome,dc=and,dc=smart,dc=com" /REBOOT:22 && goto end || goto default_OU
:move_to_default_OU
::If name does not match any strings, place computer in default container.
echo.%computername%|findstr /B /I /C:"" >nul 2>&1 && netdom JOIN %computername% /Domain:handsome.and.smart.com /userd:delegate /passwordd:topsecret /OU:"OU=DEFAULT CLIENTS,OU=XP ALL OU,dc=handsome,dc=and,dc=smart,dc=com" /REBOOT && goto end
:end
::Pause was used in the attempt to troubleshoot.
pause