Moorfox

PowerShell automations · 2026-08-01

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 HKCU hive and will not appear when run as SYSTEM or another admin; add HKCU: paths if you need them for the logged-on user.
  • Store/UWP apps are a separate world: Get-AppxPackage -AllUsers.
  • InstallDate is 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.

Request an invite