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