Here is a very quick way of finding installed software. The Get-Software function reads both the 32- and 64-bit locations for software installed for all users.
#requires -Version 1 function Get-Software { param ( [string] $DisplayName='*', [string] $UninstallString='*' ) $keys = 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\*', 'HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*' Get-ItemProperty -Path $keys | Where-Object { $_.DisplayName } | Select-Object -Property DisplayName, DisplayVersion, UninstallString | Where-Object { $_.DisplayName -like $DisplayName } | Where-Object { $_.UninstallString -like $UninstallString } }
It even comes with filtering parameters, so when you specify -DisplayName or -UninstallString (or both), you can easily filter the results to only the software products you are looking for. Both parameters support wildcards.
Here is a sample call that dumps all Office components to a grid view window:
Get-Software -DisplayName *Office* | Out-GridView