May 21, 2013 at 4:45 pm #6804
I'm curious about what alternatives you use for querying Win32_product via WMI? As per Microsoft this is a bad thing I can ask Google, and I know some alternatives but I'm curious as to what you all do.
So while Get-WmiObject win32_Product is great, it's triggering MSI Installer for every application.
May 22, 2013 at 4:28 am #6813
Can you clarify what you mean by "it's triggering MSI installer for every application", and "as per Microsoft this is a bad thing"? I use Win32_Product and haven't run into any issues with MSI installer.
May 22, 2013 at 7:29 am #6826
You bet. On Windows 7 SP1 open Powershell and run this command: Get-WmiObject win32_Product
When finished open your Event Viewer, and go to Application. You should see many messages stating:
Windows Installer reconfigured the product. Product Name: . Product Version: Product Language: . Manufacturer: . Reconfiguration success or error status: 0.
To quote the article I linked:
Win32_product Class is not query optimized. Queries such as â€œselect * from Win32_Product where (name like 'Sniffer%')â€ require WMI to use the MSI provider to enumerate all of the installed products and then parse the full list sequentially to handle the â€œwhereâ€ clause. This process also initiates a consistency check of packages installed, verifying and repairing the install. With an account with only user privileges, as the user account may not have access to quite a few locations, may cause delay in application launch and an event 11708 stating an installation failure.
That would be why it's bad. Initiating a consistency check, verifying, and repairing the install. If this were a server and not a client OS, it could cause big potential problems.
It has been stated, not by Microsoft, that the message is false positive. It does not actually trigger a repair. But, are you willing to gamble that?
May 22, 2013 at 9:29 am #6830
Are you trying to get program information?
I usually enumerate the registry.
Take a look at this key (remove the wow for 32-bit machines):
Maybe you could do something like this:
gp -Path HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* | select DisplayName,Publisher,Version,UninstallString
May 22, 2013 at 10:16 am #6832
Clearly I read your original post too early in the morning, because I had Win32_Process on the brain, not Win32_Product, which totally makes sense now. I'll blame it on the fact that I don't drink coffee or caffeine. 🙂
I don't know of alternatives for Win32_Product though with perhaps the exception of going into the Registry and getting the information on the installed products directly from there.
May 22, 2013 at 12:14 pm #6835
Yup, so far the registry is my only alternative. Which is fine. Just looking for ideas 🙂
You must be logged in to reply to this topic.