首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用netdom的自动批处理脚本将新映像的用户连接到域

使用netdom的自动批处理脚本将新映像的用户连接到域
EN

Stack Overflow用户
提问于 2011-12-09 04:18:28
回答 1查看 3.8K关注 0票数 0

尽管我看起来是世界上最聪明的人之一,但我既不精通脚本,也不擅长编程。

我的基本当前设置是:

  • Windows 2003将很快成为2008年R2 AD模式
  • XP SP3工作站不久将成为Windows 7(类似于一年或两年)。

这是我试图完全自动化域连接的过程,详细在这篇文章的形象。

我使用几个批处理脚本和几个vbs文件来运行映像,然后使用GhostCast服务器或GSS2.5版本的Ghost控制台进行SysPrep‘’ed。基本上,WSNAME从文本文件中通过mac地址重命名计算机并重新启动。

程序必须在计算机重命名后更新其SQL实例,然后计算机必须重新启动。

在重新启动之后,我希望这个脚本执行以下所有自动化的操作:

首选使用netdom的批处理脚本。

  1. 通过字符串或任何适当的
  2. 查询计算机名称,如果计算机名称与字符串匹配,则将此计算机连接到此域,然后重新启动脚本,如果计算机名称不匹配,则
  3. ;如果计算机名称不匹配,则转到下一个语句以检查是否匹配,然后将OU重新启动并将该计算机连接到此域,如果没有找到字符串匹配,则应重新启动脚本或
  4. ;通过语句递归并将计算机连接到默认OU,然后重新启动,脚本应结束

G 215

本质上,所有计算机都将在指定的OU下加入域。

为了保护无辜者,重要的事情已经改变了!

这一尝试来自多个网站,但主要来自Find out whether an environment variable contains a substring。如果这可以更好地使用vbs或任何其他程序,请提供文件。

我还了解到,在作为批处理脚本运行时,单百分比符号(%)可能必须是双百分比符号(%)。

在这个尝试中,我还有大约四个文件迭代,以使这个东西也能工作。所以在过去的几个星期里,我一直在徒劳地尝试。

主要问题似乎是如何获得正确的语法,以便根据findstr命令查询计算机名。我可以通过命令行操纵语句,让它们手动工作,但不是作为一个批处理脚本。

经过更多的研究后,使用Set命令为搜索字符串设置变量似乎也是可行的。这些计算机中的一些属于同一个OU,因此只要正确的查询字符串已经存在,就可以修改或省略其中的几条语句。

请把它拿去修改,甚至把它全部扔掉。我只想要一些完美无瑕的东西。所有的帮助都是非常感谢的。

此脚本手动工作,但显然它只是交互式的。

代码语言:javascript
复制
::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
EN

回答 1

Stack Overflow用户

发布于 2014-01-28 14:54:45

除非在某些情况下它确实具有名称意义,否则我不会使用它,这不是其中之一。批次一直有管道问题。

我会使用标准函数调用进行重写(使用:Tag命名来命名您的函数,而GOTO :EOF终止它们(底部是:EOF标记)。使用Call和Goto命令四处移动。您可以从系统中提取所需的信息,并从那里可靠地注入变量,写入文件,并使用/F来拉动。

唯一需要使用%%的时间是在使用/F时。

域连接系统有几种方法: NetDom、WMIC、Powershell、VBS函数、et.我的首选是使用最新的方法,并将其外部化为脚本(例如,将数据放到文本文件中,然后调用powershell函数,该函数返回其他批处理读取的变量以确定发生了什么)。批处理确实是为了这样的使用而设计的。

最后,我将在服务器上有一个脚本,一旦加入适当的OU,就可以将计算机移动到相应的OU中。如果您犯了错误并在部署期间捕获了它,那么在主机脚本中执行它可能会很麻烦。再按一个按钮,没什么大不了的。还允许您使用部署组策略设置。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8441011

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档