Public/Get-PSUInstalledSoftware.ps1
function Get-PSUInstalledSoftware { <# .SYNOPSIS Lists installed software on the system. .DESCRIPTION Retrieves a list of installed applications from both 32-bit and 64-bit registry paths. Optionally filters results by software name or publisher. .PARAMETER Name Filter the results by display name (supports wildcards, e.g., '*Chrome*'). .PARAMETER Publisher Filter the results by publisher (supports wildcards, e.g., '*Microsoft*'). .EXAMPLE Get-PSUInstalledSoftware -Name '*Chrome*' .EXAMPLE Get-PSUInstalledSoftware -Publisher '*Microsoft*' .NOTES Author: Lakshmanachari Panuganti File Creation Date: 2025-07-03 #> [CmdletBinding()] [OutputType([pscustomobject])] param( [parameter()] [string]$Name, [parameter()] [string]$Publisher ) $paths = @( 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\*', 'HKLM:\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*' ) $results = foreach ($path in $paths) { Get-ItemProperty -Path $path -ErrorAction SilentlyContinue | Where-Object { $_.DisplayName } | Select-Object DisplayName, DisplayVersion, Publisher, InstallDate, UninstallString } if ($Name) { $results = $results | Where-Object { $_.DisplayName -like $Name } } if ($Publisher) { $results = $results | Where-Object { $_.Publisher -like $Publisher } } $results | Sort-Object DisplayName -Unique } |