实验要求:
域客户端分发安装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,设置计算机--开机启动
查看客户端所应用到的组策略
设置好后,通过客户端测试
本文转自 高文龙 51CTO博客,原文链接:http://blog.51cto.com/gaowenlong/1226155,如需转载请自行联系原作者