' FILENAME: UninstallAllOldJava.vbs ' AUTHOR: jbmurphy ' SYNOPSIS: This script looks for older versions of Java and removes them ' DESCRIPTION: Searches add remove programs for J2SE or Java and removes if not current version ' NOTES: - Must edit strCurrentVersion to match the version you want to keep ' - if called with a computer name will, run against remote machine ' - logs to local path defined in strLogPath ' - assumes admin priv ' LINKS: ' EXAMPLE: UninstallAllOldJava.vbs ' EXAMPLE: UninstallAllOldJava.vbs \\workststion ' INPUTS: \\workststion (optional) ' RETURNVALUE: logs to value in strLogPath ' ChangeLog: ' 2009-10-27: jbmurphy-changes made 'On Error Resume Next Option Explicit DIM objFSO, strComputer, strCurrentVersion, objWMIService, colInstalledVersions DIM objVersion, strLogPath, strLogName, strExecQuery IF WScript.Arguments.Count > 0 then strComputer = replace(WScript.Arguments(0),"\\","") ELSE strComputer = "." END If strLogPath = "%TEMP%" strLogName = "Java_Uninstall.log" strCurrentVersion = "Java(TM) 6 Update 15" strExecQuery = "Select * from Win32_Product Where Name LIKE '%Java 2 Runtime Environment%' OR Name LIKE '%J2SE Runtime Environment%' OR Name LIKE '%Java(TM)%'" KillProc Set objFSO = CreateObject("Scripting.FileSystemObject") Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") Set colInstalledVersions = objWMIService.ExecQuery (strExecQuery) LogIt String(120, "_") LogIt String(120, "¯") For Each objVersion in colInstalledVersions If objVersion.Name = strCurrentVersion then LogIt Now() & ": " &replace(strComputer,".","localhost") & ": Current version is installed: " & objVersion.Name & ":" & objVersion.IdentifyingNumber else LogIt Now() & ": " &replace(strComputer,".","localhost") & ": Uninstalling: " & objVersion.Name & ":" & objVersion.IdentifyingNumber objVersion.Uninstall() end if Next LogIt String(120, "_") LogIt String(120, "¯") LogIt String(120, " ") Sub LogIt (strLineToWrite) 'wscript.echo strLineToWrite DIM ts If Not objFSO.FolderExists(strLogPath) Then MakeDir(strLogPath) Set ts = objFSO.OpenTextFile(strLogPath & strLogName, 8, True) ts.WriteLine strLineToWrite ts.close End Sub Function MakeDir (strPath) Dim strParentPath On Error Resume Next strParentPath = objFSO.GetParentFolderName(strPath) If Not objFSO.FolderExists(strParentPath) Then MakeDir strParentPath If Not objFSO.FolderExists(strPath) Then objFSO.CreateFolder strPath On Error Goto 0 MakeDir = objFSO.FolderExists(strPath) End Function Sub KillProc() '# kills jusched.exe and jqs.exe if they are running. These processes will cause the installer to fail. Dim wshShell Set wshShell = CreateObject("WScript.Shell") wshShell.Run "Taskkill /F /IM jusched.exe /T", 0, True wshShell.Run "Taskkill /F /IM jqs.exe /T", 0, True End Sub