I am trying to get all installed apps in the computers of my domain but i haven't found a way to get the information in an accurate way first i was trying to achieve this through the registry key:
HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*
but this returned more info than i need like updates installed. So i searched for another way and I found that the wmi class Win32_product
contains all installed apps but after trying with this y have found that the info that recolects is incorrect
¿why there are some apps like google chrome, free proxy, dell system diagnostics, that does not appear when querying the class?
In this link is the answer for this question
With powershell get exactly the same application list as in Add/Remove programms
¡there is a way to accurately get all installed applications in windows via powershell or command line?
The WMI class
Win32_Product
uses the MSI provider to collect installed program data. This means you're only going to get data on software/packages installed using MSI. Further, calling this class causes a repair action to be executed on every program it returns. Most of the time this isn't an issue, but it will fill up the event log and can cause issues for some software. You can get more detail on this link: Win32_Product ClassMost scripters, coders, etc use one of two things; 1) Registry Query, 2) WMI query of the SCCM class
SMS_InstalledSoftware
. Obviously the SCCM class requires SCCM to be installed on the host. You can read more about that HERE. So that really only leaves the registry query for most folx. Don't fret though, because all the work was already done for you by TSG.Your pot of gold is "Use PowerShell to Quickly Find Installed Software"
While I'd do things slightly differently than in that post, it has all the heavy lifting already written. With a little aptitude and some google searching you can customize as you wish.
I'm not sure if you're intentionally ignoring 64-bit software, but keep in mind that the SOFTWARE\Wow6432Node is only supposed to be for 32 bit software running on a 64 bit machine. You also have HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\
If you want all software, you'll need to aggregate a few methods/sources. Those two keys should have most, if not all. You must also consider HKEY_USERS[each user]\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\ and its Wow6432Node counterpart. Applications like DropBox, sometimes google chrome, and a few others are installed only in the user environment. I suspect this is also why the Win32_Product does not have those specific packages.
For filtering your aggregated list, there isn't a simple way. You could exclude those with the key System=1 or Publisher="Microsoft Corporation" (double check the key name; I may have remembered wrong). Those keys are used in some non-essential software too, though.
Wmic
might useful tool for this. For example :wmic product get Name, Version
.Beaware that this command might fail listing some installed programgs. For me on
Windows 7
it does not see thatOpera
is installed.There also many options for formatting the output: http://www.pearsonitcertification.com/articles/article.aspx?p=1700427&seqNum=4