Sample Script to Verify IIS File Versions for KB973917

Microsoft recently released an update for Internet Information Services (IIS), as described in the following article:

 

 

Description of the update that implements Extended Protection for Authentication in Internet Information Services (IIS)

http://support.microsoft.com/kb/973917

 

 

In the Known Issues section, the KB describes a known issue with the update when it is installed on Windows Server 2003 with IIS6.  More information about the known issue is also described in the following article:

 

Internet Information Services 6.0 may not function correctly after installing KB973917

http://support.microsoft.com/kb/2009746/

 

 

To mitigate the known issue, server administrators should ensure all of the IIS components are at the Windows Server Service Pack 2 version or later.  The KB973917 article lists the component names and the version numbers to check for.

 

To automate the version checking process, it is possible to write a script that iterates through the IIS components and verifies the version number.  The following script is an example of such an automation.

 

NOTE: The following script is provided AS-IS with no warranty or support, for sample purposes only. 

 

'Created by Punit Shah to verify the installation of IIS binaries on Windows Server 2003 SP2
'Save into a vbs file as Verify2003SP2.vbs then run as: cscript.exe Verify2003SP2.vbs

Dim myFileArray(55)
Dim myFileArray2(1)
Dim myFileArray3(0)
Dim inetsrvpath 

myFileArray2(0)	= "Nntpsnap.dll"
myFileArray2(1)	= "Smtpsnap.dll"
myFileArray3(0)	= "Iisclex4.dll"
myFileArray(0)	= "Adrot.dll"
myFileArray(1)	= "Adsiis.dll"
myFileArray(2)	= "Asp.dll"
myFileArray(3)	= "Browscap.dll"
myFileArray(4)	= "Certobj.dll"
myFileArray(5)	= "Coadmin.dll"
myFileArray(6)	= "Controt.dll"
myFileArray(7)	= "Davcdata.exe"
myFileArray(8)	= "Davcprox.dll"
myFileArray(9)	= "Gzip.dll"
myFileArray(10)	= "Httpext.dll"
myFileArray(11)	= "Httpmib.dll"
myFileArray(12)	= "Httpodbc.dll"
myFileArray(13)	= "Iisadmin.dll"
myFileArray(14)	= "Iiscfg.dll"
myFileArray(15)	= "Iisext.dll"
myFileArray(16)	= "Iislog.dll"
myFileArray(17)	= "Iisres.dll"
myFileArray(18)	= "Iisrstas.exe"
myFileArray(19)	= "Iisui.dll"
myFileArray(20)	= "Iisuiobj.dll"
myFileArray(21)	= "Iisutil.dll"
myFileArray(22)	= "Iisw3adm.dll"
myFileArray(23)	= "Iiswmi.dll"
myFileArray(24)	= "Inetinfo.exe"
myFileArray(25)	= "Inetmgr.dll"
myFileArray(26)	= "Inetmgr.exe"
myFileArray(27)	= "Infocomm.dll"
myFileArray(28)	= "Isapips.dll"
myFileArray(29)	= "Isatq.dll"
myFileArray(30)	= "Iscomlog.dll"
myFileArray(31)	= "Logscrpt.dll"
myFileArray(32)	= "Lonsint.dll"
myFileArray(33)	= "Metadata.dll"
myFileArray(34)	= "Nextlink.dll"
myFileArray(35)	= "Nntpadm.dll"
myFileArray(36)	= "Rpcref.dll"
myFileArray(37)	= "Seo.dll"
myFileArray(38)	= "Smtpadm.dll"
myFileArray(39)	= "Ssinc.dll"
myFileArray(40)	= "Svcext.dll"
myFileArray(41)	= "Uihelper.dll"
myFileArray(42)	= "Urlauth.dll"
myFileArray(43)	= "W3cache.dll"
myFileArray(44)	= "W3comlog.dll"
myFileArray(45)	= "W3core.dll"
myFileArray(46)	= "W3ctrlps.dll"
myFileArray(47)	= "W3ctrs.dll"
myFileArray(48)	= "W3dt.dll"
myFileArray(49)	= "W3ext.dll"
myFileArray(50)	= "W3isapi.dll"
myFileArray(51)	= "W3tp.dll"
myFileArray(52)	= "W3wp.exe"
myFileArray(53)	= "Wam.dll"
myFileArray(54)	= "Wamps.dll"
myFileArray(55)	= "Wamreg.dll"

set shell = CreateObject("WScript.Shell")
inetsrvpath = shell.ExpandEnvironmentStrings("%WinDir%") 
inetsrvpath = inetsrvpath & "\system32\inetsrv\"

For Each file in myFileArray2
	Set objFSO = CreateObject("Scripting.FileSystemObject")
	iisFile =  inetsrvpath & file
	If objFSO.FileExists(iisFile) Then
		Set objFile = objFSO.GetFile(iisFile)
		'Wscript.Echo objFSO.GetFileVersion(iisFile)
		If objFSO.GetFileVersion(iisFile) < "6.0.3728.0" Then 
			Wscript.Echo "WARNING!!! " & iisFile & "(" & objFSO.GetFileVersion(iisFile) & ") does not match the expected version(6.0.3728.0) on Windows Server 2003 SP2"
		End If
	Else
		Wscript.Echo "WARNING!!! " & iisFile  & " does not exist."
	End If
Next

For Each file in myFileArray3
	Set objFSO = CreateObject("Scripting.FileSystemObject")
	iisFile =  inetsrvpath & file
	If objFSO.FileExists(iisFile) Then
		Set objFile = objFSO.GetFile(iisFile)
		'Wscript.Echo objFSO.GetFileVersion(iisFile)
		If objFSO.GetFileVersion(iisFile) < "6.0.3790.0" Then 
			Wscript.Echo "WARNING!!! " & iisFile & "(" & objFSO.GetFileVersion(iisFile) & ") does not match the expected version(6.0.3790.0) on Windows Server 2003 SP2"
		End If
	Else
		Wscript.Echo "WARNING!!! " & iisFile  & " does not exist."
	End If
Next

For Each file in myFileArray
	Set objFSO = CreateObject("Scripting.FileSystemObject")
	iisFile =  inetsrvpath & file
	If objFSO.FileExists(iisFile) Then
		Set objFile = objFSO.GetFile(iisFile)
		'Wscript.Echo objFSO.GetFileVersion(iisFile)
		If objFSO.GetFileVersion(iisFile) < "6.0.3790.3959" Then 
			Wscript.Echo "WARNING!!! " & iisFile & "(" & objFSO.GetFileVersion(iisFile) & ") does not match the expected version(6.0.3790.3959) on Windows Server 2003 SP2"
		End If
	Else
		Wscript.Echo "WARNING!!! " & iisFile  & " does not exist."
	End If
Next

No Comments