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