The best place to find information about currently installed software is actually from the place that stores information about how to uninstall it: the HKLM:\SOFTWARE\ Microsoft\Windows\CurrentVersion\Uninstall registry key.
Each child of that registry key represents a piece of software you can uninstall—traditionally through the Add/Remove Programs entry in the Control Panel. In addition to the DisplayName of the application, other useful properties usually exist (depending on the application). Examples include Publisher, UninstallString, and HelpLink.
To see all the properties available from software installed on your system, type the following:
$properties = GetInstalledSoftware | ForeachObject { $_.PsObject.Properties }
$properties | SelectObject Name | SortObject Unique Name
This lists all properties mentioned by at least one installed application (although very few are shared by all installed applications).
To work with this data, though, you first need to retrieve it. Example 243 provides a script to list all installed software on the current system, returning all information as properties of PowerShell objects.
Example 243. GetInstalledSoftware.ps1
############################################################################## ## ## GetInstalledSoftware.ps1 ## ## List all installed software on the current computer. ## ## ie: ##
Example 243. GetInstalledSoftware.ps1 (continued)
## PS >GetInstalledSoftware PowerShell ## ##############################################################################
param( $displayName = ".*" )
## Get all the listed software in the Uninstall key $keys = GetChildItem HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
## Get all of the properties from those items $items = $keys | ForeachObject { GetItemProperty $_.PsPath }
## For each of those items, display the DisplayName and Publisher foreach($item in $items) {
if(($item.DisplayName) and ($item.DisplayName match $displayName)) { $item } }