-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Martha Hoffmann escribió:
> What is the best way to tell when a windows update was last performed on a
> computer?
The script that i attach to this post, made by Torgeir Bakken (MVP),
list all the updates installed in your OS.
- --
Saludos / Fernando M.
Fermu's Website -
http://www.fermu.com
Registered Linux User #367696 - MS MVP Windows - Shell/User
La caridad bien entendida comienza por uno mismo (by Moni)
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.2 (MingW32)
iD8DBQFE5JhPTOjWl8puOQ4RAib+AJ40aWInG/rR517MIuGuu4gK4LY3UACguyMq
B0n4HOu2gO5aci0uAG1Kz8w=
=BzYR
-----END PGP SIGNATURE-----
' Description: Script that outputs some computer information
' and lists all installed hotfixes including installation date
'
' For Windows 2000 SP3/SP4, Windows XP (all versions) and
' Windows 2003 Server (all versions)
'
' Author: Torgeir Bakken
' Date: 2004-10-19
'
' Revisions
' 2004-12-09: Added support for the new IE update structure in registry
'
Const OpenAsASCII = 0
Const OverwriteIfExist = -1
Set oShell = CreateObject("WScript.Shell")
Set oFSO = CreateObject("Scripting.FileSystemObject")
sFile = oFSO.GetSpecialFolder(2).ShortPath & "\updates.txt"
Set fFile = oFSO.CreateTextFile(sFile, OverwriteIfExist, OpenAsASCII)
fFile.WriteLine
fFile.WriteLine "Hotfix report date: " & Now & vbCrLf
strComputer = "." ' use "." for local computer
Const HKLM = &H80000002
'On Error Resume Next
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colSettings = objWMIService.ExecQuery _
("Select * from Win32_OperatingSystem")
' get general info about the OS
' Caption value for different OS:
' Microsoft Windows 2000 ...
' Microsoft Windows XP ...
' Microsoft(R) Windows(R) Server 2003, ..... Edition
For Each objOperatingSystem in colSettings
strOSCaption = objOperatingSystem.Caption
Select Case True
Case InStr(1, strOSCaption, "windows 2000", vbTextCompare) > 0
strOS = "Windows 2000"
Case InStr(1, strOSCaption, "windows xp", vbTextCompare) > 0
strOS = "Windows XP"
Case InStr(1, strOSCaption, "windows(r) server 2003", vbTextCompare) > 0
strOS = "Windows Server 2003"
End Select
intOSLang = objOperatingSystem.OSLanguage
strOSLangHex = Right("000" & Hex(intOSLang), 4)
strOSServicePack = objOperatingSystem.CSDVersion
Next
Set objReg = GetObject("WinMgmts:{impersonationLevel=impersonat e}!//" _
& strComputer & "/root/default:StdRegProv")
strOSLanguage = "Unknown" ' Init value
strKeyPath = "SOFTWARE\Classes\MIME\Database\Rfc1766"
strValueName = strOSLangHex
objReg.GetStringValue HKLM, strKeyPath, strValueName, strOSLanguage
' remove unnecessary stuff
arrOSLanguage = Split(strOSLanguage, ";")
strOSLanguage = arrOSLanguage(UBound(arrOSLanguage))
If Instr(strOSLanguage, "(") > 0 Then
arrOSLanguage = Split(strOSLanguage, "(")
strOSLanguage = Trim(arrOSLanguage(0))
End If
fFile.WriteLine "OS version: " & strOSCaption
fFile.WriteLine "SP version: " & strOSServicePack
fFile.WriteLine "OS language: " & strOSLanguage
' start enumeration of hotfixes
fFile.WriteLine vbCrLf & "Hotfixes Identified:" & vbCrLf
strRegBaseUpdOS = "SOFTWARE\Microsoft\Updates\" & strOS
strRegBaseUpdIE = "SOFTWARE\Microsoft\Updates\Internet Explorer 6\SP1\"
Set colItems = objWMIService.ExecQuery _
("Select * from Win32_QuickFixEngineering",,48)
For Each objItem in colItems
If objItem.HotFixID <> "File 1" Then
fFile.WriteLine "HotFixID: " & objItem.HotFixID
fFile.WriteLine "Description: " & objItem.Description
fFile.WriteLine "InstalledBy: " & objItem.InstalledBy
strInstallDate = Null ' init value
If InStr(1, objItem.HotFixID, "-IE6SP1-", vbTextCompare) > 0 Then
strRegKey = strRegBaseUpdIE & objItem.HotFixID
objReg.GetStringValue HKLM, strRegKey, _
"InstalledDate", strInstallDate
ElseIf objItem.ServicePackInEffect <> "" Then
strRegKey = strRegBaseUpdOS & "\" & objItem.ServicePackInEffect _
& "\" & objItem.HotFixID
objReg.GetStringValue HKLM, strRegKey, _
"InstalledDate", strInstallDate
End If
If IsNull(strInstallDate) Then
strInstallDate = "(none found)"
End If
fFile.WriteLine "InstallDate: " & strInstallDate
fFile.WriteLine ' blank line
End If
Next
fFile.Close
oShell.Run sFile