MSP·OUTPOST
Menu
PowerShell · Reporting

Export installed software inventory

Run via your RMM to build a software inventory for any managed Windows endpoint. Checks both 64-bit and 32-bit registry hives so nothing is missed. The resulting CSV is useful for licence audits, end-of-life tracking, and detecting unauthorized applications.

Script

Code

$registryPaths = @(
  "HKLM:SoftwareMicrosoftWindowsCurrentVersionUninstall*",
  "HKLM:SoftwareWOW6432NodeMicrosoftWindowsCurrentVersionUninstall*",
  "HKCU:SoftwareMicrosoftWindowsCurrentVersionUninstall*"
)

$software = foreach ($path in $registryPaths) {
  Get-ItemProperty -Path $path -ErrorAction SilentlyContinue |
    Where-Object { $_.DisplayName -ne $null } |
    Select-Object `
      @{ N = "Name";      E = { $_.DisplayName } },
      @{ N = "Version";   E = { $_.DisplayVersion } },
      @{ N = "Publisher"; E = { $_.Publisher } },
      @{ N = "Installed"; E = { $_.InstallDate } }
}

$software |
  Sort-Object Name |
  Export-Csv -Path ".InstalledSoftware.csv" -NoTypeInformation

Write-Output "Exported $($software.Count) entries to InstalledSoftware.csv"
Usage

How to use this script

Run via your RMM to build a software inventory for any managed Windows endpoint. Checks both 64-bit and 32-bit registry hives so nothing is missed. The resulting CSV is useful for licence audits, end-of-life tracking, and detecting unauthorized applications.

Review the script and test in a non-production environment before running at scale.

Tags
endpointsinventoryreportinglicence-audit