PowerShell get non Microsoft updates?


The PowerShell Get-Hotfix command gets a list of Microsoft hotfixes. However, it does not get any of the third party updates that are installed via a msp file. For example, Adobe Reader XI (11.0.11)(1). You can see these via the Control Panel Uninstall an update area.

How can I get the list of updates that would include specific text in the name? In the example above, I would like to see a list of all updates for Adobe*.

I am looking for the equivilent of Get-Hotfix -Description Adobe*

Who is Participating?

[Product update] Infrastructure Analysis Tool is now available with Business Accounts.Learn More

I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

I can't say exactly how the View installed updates area works.  For example, on my machine I have installed several .MSP patches to Adobe Reader X, but only the last one is shown.  Supposedly since v10, Adobe Reader (and Acrobat) updates are cumulative so that could be the explanation in Adobe's case.

Probably your best best of getting what you want is to use one of the scripts people have written for getting lists of installed software or updates and then filtering the results based on what you want.  My understand of Get-Hotfix is that is uses the Win32_QuickFixEngineering WMI class which only reports certain things.
You could try https://gallery.technet.microsoft.com/Get-Installed-Programs-fae091ed
Save the code to a file and then run it.  It will generate an .XML file with the results.  To view the results you could do something like
([xml](Get-Content ".\Programs.xml")).Programs.Program | sort programname | ft
# or to filter
([xml](Get-Content ".\Programs.xml")).Programs.Program | Where {$_.ProgramName -like "Adobe*"} | sort programname | ft

Open in new window

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
ckelsoeAuthor Commented:
Wow - that is some code from the link you provided. Overkill for what I need. I will look for another method.

True, it's fairly robust.  I don't know if I would've gone the route it did with creating the XML file and using C# (actually I know I wouldn't).  I think the amount of code could be reduced a great amount by just using custom PS objects.  But the good thing about it is: 1) it's already written; 2) it grabs programs/patches from registry, WMI, etc. instead of just one source so the list should be complete.  And from that list it's easy to filter down to what you need in different scenarios.  You could check out MS Technet Script Respository to see if anyone's written something that's a bit more brief.
ckelsoeAuthor Commented:
Does not seem to be a simpler solution possible. This is way more complex that I really need, however, it does achieve the results needed. Thanks much
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today

From novice to tech pro — start learning today.