Functions/Get-InstalledPrograms.ps1


function Get-InstalledPrograms {
    [CmdletBinding()]
    param (
        [Parameter()] [string] $SearchString
    )

    $Installed1 = Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*
    $Installed2 = Get-ItemProperty HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*
    $Installed3 = Get-ItemProperty HKCU:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*

    $Installed = $Installed1 + $Installed2 + $Installed3

    $Installed = $Installed | Where-Object DisplayName

    if ($SearchString) {

        $return = $Installed | Where-Object { ($_.DisplayName -Like "*$($SearchString)*") -or ($_.Publisher -Like "*$($SearchString)*") }

    } else {
        $return = $Installed
    }


    $return = $return | Select-Object PSChildName, DisplayName, DisplayVersion, Publisher, InstallDate, UninstallString

    $return = $return | Sort-Object DisplayName

    return $return

}