, AndyC wrote

Get-WmiObject -Class Win32_Product

I get vastly different results using that (330 items with WMI and 937 items with the registry), and the WMI approach is much slower. Don't know how to account for the differences, but the WMI approach should be giving proper results.