通过Vbs部署Symantec client

实验要求:

域客户端分发安装symantec client

windows2003、windows2008R2、windows2012不安装

思路介绍

我们说说道软件分发,大家肯定第一时间想到的是通过Group policy

通过AD Policy部署软件,但是由于系统分为x86、x64;同时软件也分为x86、x64,x86软件必需安装在x86系统上,x64软件必需安装在x64系统上,当然实现这个对组策略来说并不难,如果需要对某个OU链接该策略的话,我们需要创建两个GPO,分别为:x86、x64,同时我们还需要通过添加WMI来判断x86及x64系统所对应版本的软件路径,这样我觉得部署很不方便。所以就想到了通过vbs来部署,然后将vbs部署在组策略上,然后应用到指定的OU、域、站点;

由于部署要求windows2003、windows2008R2、windows2012不需要安装该应用程序(服务器加域没定义将计算机移动到指定的服务器OU下),所以就需要通过判断os version来判断是不是服务器操作系统,如果是服务性操作系统就不给安装,但是经过查看发现windows7 sp1的os version与windows2008R2的os version一样(6.1.7201),windows8的os version和windows2012的os version一样(6.2.9200)。这样来又遇到了困难,最后通过循环判断os name+os version,因为,我们发现服务器性操作系统的os name均为:microsoft windows server xx,有server字符。最后在努力下解决该问题,本次主要分享经验,谢谢

os version:

Os Name:microsoft windows 7(Professional、Enterprise)     
Os Version=6.1.7600      
Os Name:microsoft windows 7 sp1(Professional、Enterprise)      
Os Version=6.1.7601      
Os Name:Microsoft Windows Server 2008 R2 (Professional、Enterprise、Datacenter、Web server)       
Os Version=6.1.7600      
Os Name:Microsoft Windows Server 2008 R2 Standard  (Professional、Enterprise、Datacenter、Web server)       
Os Version=6.1.7601      
Os Name:Microsoft Windows 8(Professional、Enterprise)      
Os Version=6.2.9200      
Os Name:Microsoft Windows Server 2012 (Datacenter、Standard)    
Os Version = 6.2.9200

vbs功能介绍:

1.通过循环判断os version+os name的方式在windows2003、windows2008R2、windows2012下不执行安装

2.判断x86系统的计算机通过网络方式访问并运行\\192.168.4.7\software$\x86\setup.exe的可执行文件;

3.判断x64系统的计算机通过网络方式访问并运行\\192.168.4.7\software$\x64\setup.exe的可执行文件;

4.除windows2003、windowsw2008R2、windows2012操作系统以外,所以操作系统都执行安装

vbs脚本内容:


Function GetOSVersion()     
   strComputer = "."      
   Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")      
   Set colItems = objWMIService.ExecQuery("Select * from Win32_OperatingSystem")      
   For Each objItem in colItems      
           strOSVersion = objItem.Version      
            OSVersion = objItem.Caption      
   Next      
   select case strOSversion      
   case "5.2.3790"      
       OSVersion = "Windows Server 2003"      
   end Select      
 GetOSVersion=OSVersion      
End Function

Function X86orX64()     

   On Error Resume Next      
   strComputer = "."      
   Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")      
   Set colItems = objWMIService.ExecQuery("Select * from Win32_ComputerSystem",,48)      
   Set WshShell = WScript.CreateObject("WScript.Shell")      
   Set fso=CreateObject("Scripting.FileSystemObject")      

   For Each objItem in colItems      
       If InStr(objItem.SystemType, "86") <> 0 Then      
           X86orX64 = "x86"       
           OSVersion=GetOSVersion()      
           filePath="C:\Program Files\Symantec\Symantec Endpoint Protection"      
           If Not RegExpTest("Windows Server 2008 R2",OSVersion) and Not RegExpTest("Windows Server 2012",OSVersion) and Not OSVersion="Windows Server 2003" Then       
               If  Not fso.FolderExists(filePath)  Then           
           WshShell.Run "\\192.168.4.7\software$\x86\setup.exe"               
           End If       
           End If       

       ElseIf InStr(objItem.SystemType, "64") <> 0 Then      
           X86orX64 = "x64"       
           OSVersion=GetOSVersion()  
           filePath="C:\Program Files (x86)\Symantec\Symantec Endpoint Protection"      
            If Not RegExpTest("Windows Server 2008 R2",OSVersion) and Not RegExpTest("Windows Server 2012",OSVersion) and Not OSVersion="Windows Server 2003" Then       
               If  Not fso.FolderExists(filePath)  Then   
           WshShell.Run "\\192.168.4.7\software$\x64\setup.exe"      
          End If       
         End If       
       Else      
           X86orX64 = objItem.SystemType      
       End If      
   Next      

End Function


Function RegExpTest(patrn, strng)     
 Dim regEx, retVal           
 Set regEx = New RegExp       
 regEx.Pattern = patrn         
 regEx.IgnoreCase = False         
 retVal = regEx.Test(strng)       
 If retVal Then      
   RegExpTest = True      
 Else      
   RegExpTest = False       
 End If      
End Function

WScript.Echo X86orX64()

保存后将该脚本更改扩展名为.vbs,然后新建GPO,链接到指定OU

编辑GPO,设置计算机--开机启动

193437884.jpg

查看客户端所应用到的组策略

193437710.jpg

设置好后,通过客户端测试

193712722.jpg




本文转自 高文龙 51CTO博客,原文链接:http://blog.51cto.com/gaowenlong/1226155,如需转载请自行联系原作者

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值