option explicit Dim ScriptDir,OutFile Dim objFSO:Set objFSO = CreateObject("Scripting.FileSystemObject") Dim objWSH:Set objWSH = CreateObject("WScript.Shell") ScriptDir = objFSO.GetParentFolderName(WScript.ScriptFullName) ' OutDir = objWSH.ExpandEnvironmentStrings("%PROGRAMFILES%\ALTIRIS\eXpress\Inventory") ' objWSH.Run """%COMSPEC%"" /C md """ & OutDir & """", 0, True OutFile = ScriptDir & "\PatchFullInv.txt" Dim objResultfile Set objResultfile = objFSO.CreateTextFile(OutFile, True) 'If objFSO.FileExists(OutFile) Then objFSO.DeleteFile(OutFile) End If Dim objProduct,ProdPatches,Patch,part0,part1,part2,part3 Dim objWinInstaller:Set objWinInstaller = CreateObject("WindowsInstaller.Installer") For Each objProduct In objWinInstaller.Products Set ProdPatches = objWinInstaller.PatchesEx(objProduct, "", 4, 1) For Each Patch In ProdPatches If Patch.PatchProperty("DisplayName") <> "" Then part1 = objWinInstaller.ProductInfo(objProduct,"InstalledProductName") part2 = Patch.PatchProperty("DisplayName") part3 = Patch.PatchProperty("InstallDate") WriteResultfile part1 & vbtab & part2 & vbtab & part3 End If Next Next Dim objQFEPatch,aQFEInstallDate,QFEInstallDate, part01,part11,part21,part31 Dim colQFE:Set colQFE = GetObject("winmgmts:{impersonationLevel=impersonate}!root\cimv2").ExecQuery ("SELECT * FROM Win32_QuickFixEngineering") For Each objQFEPatch In colQFE If objQFEPatch.HotFixID <> "" AND objQFEPatch.InstalledOn <> ""Then If InStr(objQFEPatch.Installedon, "/") > 0 Then aQFEInstallDate = Split(objQFEPatch.InstalledOn, "/") QFEInstallDate = pd(aQFEInstallDate(2), 4) & pd(aQFEInstallDate(0), 2) & pd(aQFEInstallDate(1), 2) Else QFEInstallDate = "unknown" End If part01 = objQFEPatch.Caption part11 = "Microsoft Windows" part21 = objQFEPatch.HotFixID part31 = QFEInstallDate WriteResultfile part11 & vbtab & part21 & vbtab & part31 & vbtab & vbtab & part01 'WriteNSI " " End If Next objResultfile.Close Set objResultfile = Nothing Function pd(n, totalDigits) If totalDigits > len(n) Then pd = String(totalDigits-len(n),"0") & n Else pd = n End If End Function Sub WriteResultfile(cont) objResultfile.WriteLine(cont) End Sub Msgbox "done"