PowerShell: list installed software (without Win32_Product)
The script
Read the two registry uninstall hives, 64-bit and 32-bit, shown below. Do not use Get-CimInstance Win32_Product: enumerating that class makes Windows Installer verify and often repair every MSI package on the machine, which is slow and can trigger repair storms.
$paths = 'HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*',
'HKLM:\Software\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*'
Get-ItemProperty $paths |
Where-Object DisplayName |
Select-Object DisplayName, DisplayVersion, Publisher, InstallDate |
Sort-Object DisplayName
Notes before you run it
- Per-user installs (many browsers, Teams) live under each user's
HKCUhive and will not appear when run as SYSTEM or another admin; addHKCU:paths if you need them for the logged-on user. - Store/UWP apps are a separate world:
Get-AppxPackage -AllUsers. InstallDateis a bare yyyyMMdd string when present, and often absent; treat it as a hint.
Run it on every machine, not one at a time.
Save any of these as a command in Moorfox and run it on a machine in one click, output and exit code captured, with no PSRemoting or WinRM setup. The agent runs it locally and reports back, even over the internet.