ITMU v3 and Windows Update Agent v5.8.0.2694
One of the pre-requisites for Inventory Tool for Microsoft Updates (v3, or the version released in November, 2006) is an updated Windows Update Agent, to version 5.8.0.2694.
According to the readme.htm for ITMUv3, if you need to run reports to verify WUA agent version, no problem! If you are on SMS2003 SP2, that value will be reported. Sounds great... but if you've ever added anything to the default sms_def.mof, and have followed the practice of compiling the entire sms_def.mof that resides on your server (in inboxes\clifiles.src\hinv) on your clients... you may have inadvertently broken the ITMU v3's (scanwrapper.exe) ability to report the WUA version.
To confirm you've got this problem, after installing ITMUv3, run the scan on a client which is normal in every way. Look at system32\ccm\logs\scanwrapper.log, and search for the line "Win32_WindowsUpdateAgentVersion", if within a line or two you get "Failed to persist Win32_WindowsUpdateAgentVersion instance. hRes = 0x80041089", you've got the same problem I had.
You have two options, you can fix it so it will be reported correctly using win32_WindowsUpdateAgentVersion, or use the AlternateMethod. If you want to fix it, you'll have to fix your current clients (that have already compiled the sms_def.mof), and change the way you mofcomp changes in the future. Otherwise, skip to Alternate Method below.
Step 1: If you version your .mof, on your server copy of sms_def.mof, modify the version.
Step 2: Take a copy of sms_def.mof, and call it something unique, (in this document, I'm calling it Mini_mo.mof), place it in the source folder for the package you use to have your sms clients compile any mof changes.
Step 3: Edit Mini_mo.mof, and Delete everything that was in the original sms_def.mof. If you are on SP2, for me, that was through the section "class Win32_WindowsUpdateAgentVersion... through the }; (which for me is on line 4812.)
Step 4: If you've compiled the entire sms_def.mof on your clients, to fix existing clients, add this to the end of your mini_mo.mof (and NOT to sms_def.mof on the server(s))
// <:[-<>>>>>Start>>-Fix ScanWrapper Error-<<Start<<<<<<<<>-]:>
#pragma namespace ("\\\\.\\root\\cimv2\\sms")
[Singleton]
class Win32_WindowsUpdateAgentVersion
{
string Version;
};
// <:[-<>>>>END>>-Fix ScanWrapper Error-<<END<<<<<<>-]:>
Step 5: Using whatever method you prefer (I use the attached script, targetting all clients where MofVersion does not equal the version in mini_mo.mof, or the version is not reported), mofcomp the mini_mo.mof on your clients.
The next time the client runs the ITMUv3 Scan, the Scanwrapper executable populates the WMI value in root\cimv2\sms\win32_WindowsUpdateAgentVersion\Value. Subsequent Hardware Inventory cycles will forward that value to SMS, and it will be available for reports.
Notes for future sms_def.mof updates... From now on, you will not be able to take the exact same sms_def.mof you have on the servers, and compile it on the clients. I suspect I'll need to maintain two .mof's; one is the server one with everything, and one is *just* the custom additions. I believe in a few months I'll be able to remove the section for 'fix scanwrapper error' in mini_mo.mof, once all the clients get fixed.
Alternate Method
Shrug your shoulders and say "so what?" The only reason this feels like it's a problem is because it's written in the ITMUv3 Readme.htm that it should report via this method. And the only reason it's not working is because you've customized what is gathered in sms_def.mof, and mofcomp'ed those changes on your clients. Do this instead:
Step 1: Assuming you do want to write reports about the version of Windows Update Agent, in SMS console, Site Settings, Client Agents, edit Software Inventory Client Agent, Inventory Collection, and add a rule for the file "wuaueng.dll" in the path "%windir\system32\", no subdirectories, exclude compressed, do not search subdirectories, do not exclude Windows directory.
Step 2: Edit sms_def.mof on the server in \clifiles\hinv, and change the report from "TRUE" to "FALSE". You do not need to re-compile this change on the clients. This next part is optional.. add a comment like
// <current date> <yourname> Do not change this report from FALSE to TRUE.
// It will not report correctly due to our customizations. Write reports against the version of
// the file wuaueng.dll to determine version of the Windows Update Agent.
Also, if you haven't upgraded to SMS 2003 SP2 yet (still on SP1), you'd probably add a rule for wuaueng.dll to get that info, because you simply don't have the SP2 client w/the extra setup for win32_WindowsUpdateAgentVersion.