Search code examples
windowspowershellscriptinginstalled-applications

Check if program with specific version is installed


I'm trying to create a very simple script which would check if the a specific program is installed and if so return the version number for that program.

I've been able to get to the point where I'm running the script and able to return a binary value if a program is installed or not but not sure how to return the version number for that installed program.

What I will post will be just what I'm doing to return if program is installed, and need help in then attaining the version number.

function Check_Program_Installed {
    $my_check = Get-ItemProperty HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* |
                Select-Object DisplayName, DisplayVersion, InstallDate |
                Format-Table -AutoSize |
                Out-String

    # Check if Google Chrome is installed
    $my_check -Match "Google Chrome"
}

Check_Program_Installed

enter image description here


Solution

  • If you want that function to look for a specific installed program instead of returning a (table) formatted string, then you could simply do:

    function Check_Program_Installed {
        [CmdletBinding()]
        Param(
            [Parameter(Position = 0, Mandatory=$true, ValueFromPipeline = $true)]
            $Name
        )
        $app = Get-ItemProperty -Path "HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*" | 
                    Where-Object { $_.DisplayName -match $Name } | 
                    Select-Object DisplayName, DisplayVersion, InstallDate, Version
        if ($app) {
            return $app.DisplayVersion
        }
    }
    
    Check_Program_Installed "Google Chrome"
    

    This will return $null when not found, or the version as string like 70.0.3538.67