You will find that listing installed software can be somewhat difficult as WMI provides the Win32_Product class, which only covers managed installs (installed by MSI). You should consider reading the registry, which is a better approach.. One little known fact is that Get-ItemProperty (used to read registry values) accepts wildcards. You can also use it to read entire trees:
Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* |
Select-Object DisplayName, DisplayVersion, Publisher, InstallDate, `
HelpLink, UninstallString
Select-Object DisplayName, DisplayVersion, Publisher, InstallDate, `
HelpLink, UninstallString
You should pipe it to Out-GridView if you would like to get a "mini" excel sheet of installed software:
Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* |
Select-Object DisplayName, DisplayVersion, Publisher, InstallDate, `
HelpLink, UninstallString | Out-GridView
Select-Object DisplayName, DisplayVersion, Publisher, InstallDate, `
HelpLink, UninstallString | Out-GridView