通过Vbs部署Symantec client

通过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,设置计算机--开机启动

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

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

你可能感兴趣的:(client,通过Vbs部署Symantec)