
使用新版的SR&S或者ASRTools后,克隆系统只需要一次重新启动就可以装好,但往往导致大部分驱动程序不能在启动到桌面前安装完成,尤其是网卡的驱动,这就导致在sysprep.inf中设置的工作组名无法生效。因此,我一直在寻找一种可以通过命令行修改工作组名的方法,但一直没有找到答案。终于通过google搜索到了WMI和WMIC,从而解决了这个难题,这可是我昨天晚上奋战到凌晨1点才找到的答案,好东西拿出来跟大家分享。 复制内容到剪贴板 代码: :: 修改当前计算机的工作组名 :: 作者:Climbing(xclimbing@msn.com) :: 创建日期:2006.10.26 :: 注:本批处理要求必须以系统管理员身份运行,给wmic增加适当的命令行参数,可以实现修改网络上的其它机器的工作组名。 @echo off :: 检测命令行参数1 if not %1#==# set JoinWorkgroup=%1 if not %Joinworkgroup%#==# goto _doit :: 从当前目录下的sysprep.inf中获得 if not exist sysprep.inf goto _noGrpName for /f "usebackq tokens=*" %%i in (`type sysprep.inf ^| find /i "JoinWorkgroup"`) do @set %%i :: 如果以上都没有,默认设置为BDGROUP :_noGrpName if %JoinWorkgroup%#==# set JoinWorkgroup=BDGROUP :_doit :: 先检查当前工作组设置,如果相同,则不修改 wmic computersystem get domain | findstr /r /i "^%JoinWorkGroup%$" > nul if %errorlevel%==0 goto _quit :: 检查环境变量COMPUTERNAME是否为空,如果为空,则从WMI数据库中提取 if not %COMPUTERNAME%#==# goto _change for /f "usebackq skip=1 tokens=*" %%i in (`wmic computersystem get name`) do set CNAME=%%i if %CNAME%#==# goto _quit set COMPUTERNAME=%CNAME% :_change echo Changing Workgroup to "%JoinWorkgroup%" ... echo. wmic computersystem where Name="%COMPUTERNAME%" call JoinDomainOrWorkgroup Name="%JoinWorkgroup%" if %errorlevel%==0 goto _success goto _quit :_success echo Successfully Changed Workgroup to "%JoinWorkgroup%". echo. :_quit for %%i in (Joinworkgroup cname) do set %%i=批处理里有比较详尽的说明,熟悉批处理的人应该可以搞明白怎么用,不熟悉的就熟悉一下吧。 强烈建议搞Windows系统维护的好好学习一下WMI相关的东西,说来惭愧,我也是刚接触到,但立刻就被它的强大给迷住了。 |