尽管我看起来是世界上最聪明的人之一,但我既不精通脚本,也不擅长编程。
我的基本当前设置是:
这是我试图完全自动化域连接的过程,详细在这篇文章的形象。
我使用几个批处理脚本和几个vbs文件来运行映像,然后使用GhostCast服务器或GSS2.5版本的Ghost控制台进行SysPrep‘’ed。基本上,WSNAME从文本文件中通过mac地址重命名计算机并重新启动。
程序必须在计算机重命名后更新其SQL实例,然后计算机必须重新启动。
在重新启动之后,我希望这个脚本执行以下所有自动化的操作:
首选使用netdom的批处理脚本。
G 215。
本质上,所有计算机都将在指定的OU下加入域。
为了保护无辜者,重要的事情已经改变了!
这一尝试来自多个网站,但主要来自Find out whether an 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发布于 2014-01-28 14:54:45
除非在某些情况下它确实具有名称意义,否则我不会使用它,这不是其中之一。批次一直有管道问题。
我会使用标准函数调用进行重写(使用:Tag命名来命名您的函数,而GOTO :EOF终止它们(底部是:EOF标记)。使用Call和Goto命令四处移动。您可以从系统中提取所需的信息,并从那里可靠地注入变量,写入文件,并使用/F来拉动。
唯一需要使用%%的时间是在使用/F时。
域连接系统有几种方法: NetDom、WMIC、Powershell、VBS函数、et.我的首选是使用最新的方法,并将其外部化为脚本(例如,将数据放到文本文件中,然后调用powershell函数,该函数返回其他批处理读取的变量以确定发生了什么)。批处理确实是为了这样的使用而设计的。
最后,我将在服务器上有一个脚本,一旦加入适当的OU,就可以将计算机移动到相应的OU中。如果您犯了错误并在部署期间捕获了它,那么在主机脚本中执行它可能会很麻烦。再按一个按钮,没什么大不了的。还允许您使用部署组策略设置。
https://stackoverflow.com/questions/8441011
复制相似问题