The Programs and Features view in the Windows Control Panel does not provide a means to export the list of installed programs as a text file.
A quick web search brought up the information that the information about installed software resides under the registry key
HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall
or, on 64-bit systems, under
HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall
(Source: social technet, Scripting Guy, HowToGeek, SuperUser)
PowerShell kann enumerate the information under these keys using the Get-ItemProperty commandlet. You can retrieve the PS properties of this data using the Get-Member commandlet.
So the first PS command to retrieve this list is
Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*
However, Control Panel does not display the registry entry if
- its DisplayName is empty or not set
- its UninstallString is empty or not set
which results in the command
Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* | where-object {$_.DisplayName -and $_.UninstallString }
To retrieve the programs directly in PowerShell ISE, we can simply use the Format-Table commandlet
Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* | Where-Object {$_.DisplayName -and $_.UninstallString } | Select-Object Publisher, DisplayName, DisplayVersion, InstallLocation, InstallDate, URLInfoAbout, UninstallString | Sort-Object Publisher,DisplayName | Format-Table
To output to a file for further processing in Excel, export to a .csv file like this
Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* | Where-Object {$_.DisplayName -and $_.UninstallString } | Select-Object Publisher, DisplayName, DisplayVersion, InstallLocation, InstallDate, URLInfoAbout, UninstallString | Sort-Object Publisher,DisplayName | Export-Ssv -delimiter "`t" -encoding "unicode" c:\temp\installed.csv