域部署下的脚本应用实践。

      公司上个月需要部署 360企业版,替换原有的杀毒软件。

      360官方随提供了域部署工具。该脚本控制器需要在域服务器一直开启。在两个部门测试的过程中发现,偶尔有一些电脑域登录后未能自动安装企业版。并且能安装企业版的电脑,也需要经过下载、验证、安装客户端,三个流程,过程有将近10分钟。

      最后选择自己尝试编写域部署脚本。

       原理图

        wKioL1R1TuaytfJ3AAGMcJZVU8M467.jpg

      备注:所谓域部署,可执行文件(本文使用.bat 批处理文件)置于域服务器的netlogon文件夹中,再在每个用户在域服务器上的“环境文件”栏目写上脚本名称,这样域用户每次域登录就会自动执行该脚本。

      wKiom1R1TvejkrsEAAMTCIZZFMU992.jpg

          在编写并测试域脚本的过程中,发现:直接运行远程共享文件夹中的360企业版的离线安装包安装是最快的(约2分钟)。

          离线安装包却并不具备 识别终端是否有安装360企业版的功能(趋势的安装程序会先识别用户有无安装趋势)。  所以我在 域脚本'360e.bat'中,加入了判断终端是否安装了360企业版的 判断语句--无论是xp还是win7的64位、32位都能识别。


脚本初型:

       if exist '%systemdrive%\Program Pile\360\360safe\360EntClient' exit   

      if exist '%systemdrive%\Program Pile (x86)\360\360safe\360EntClient' exit

     192.168.2.xxx\360ent\setup.exe


      第一句的意思是,如果系统盘存在360EntClinet文件夹,则结束本脚本(32位win7和xp用);

      第二句的意思是,如果系统盘存在360EntClinet文件夹,则结束本脚本(64位win7用);

      最后一句是执行360离线安装包安装;

  ( 备注:‘%systemdrive%’为系统盘,若直接使用'C:'替代‘%systemdrive%’,则不能正确识别系统安装在D盘、E盘的系统。)


      因为这个‘360EntClinet’是企业版有别于360个人版的文件夹,所以用此为判断参考点。

 勉强克服了识别识别客户端是否安装了360企业版的困难。


   第二个困难是域脚本偶尔失效的问题,由于权限问题,我只能修改放在主域服务器脚本里,辅助域服务器的修改,小组长基于安全考虑,暂不让我修改(已做好备份的前提下)。  这个问题卡了我很久,最终使用gpresult /v命令证明终端域登录时有时是向辅助域服务器领取登陆脚本,小组长才让我把‘360.bat’部署到辅助域服务器,不再出现域脚本失效的情况。


   最后一个问题,我是这上一周末想到的----对于已经把360个人版安装到其他盘(非系统盘)的终端(360企业版默认安装到C盘,或者安装到已经安装了360个人版的分区),系统盘永远不存在‘360EntClinet’文件夹。      这个文件夹将会出现在本来安装了360个人版的其他分区中。   如此一来,域脚本对于部分已经把360个人版安装到其他分区的终端失效,需要调整。

    

   后来在网上查阅,我发现,可以用存在于注册表的软件信息判别是否有安装某个软件。

于是我查找注册表中360企业版的注册消息。经过对比,发觉xp、win7的32位和64位系统中,都存在  这个注册信息在此位置。


   后来我把域部署脚本‘360.bat’修改成如下:

@reg query HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\|find /i "360EntClientSvc">nul 2>nul

@if %errorlevel%==0 exit

\\192.168.2.xxx\360ent\setup.exe


‘@’用于隐藏脚本信息,以免被员工看见,被加以破解。

‘%errorlevel%’为软件返回信号,0为前面的语句执行正确。


至此,360企业版的域部署才妥善完成,部署过程顺利完成。

(欢迎交流)


你可能感兴趣的:(部署,bat,批处理,域策略,域服务器)