public/Get-InstalledPackage.ps1

# Returns the packages that are installed.
function Get-InstalledPackage {
    [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSReviewUnusedParameter', '', Justification='Version may not always be used, but are still required')]
    [CmdletBinding()]
    param (
        [Parameter()]
        [string]
        $Name,

        [Parameter()]
        [string]
        $RequiredVersion,

        [Parameter()]
        [string]
        $MinimumVersion,

        [Parameter()]
        [string]
        $MaximumVersion
    )

    Write-Debug ($LocalizedData.ProviderDebugMessage -f ('Get-InstalledPackage'))

    # If a user wants to check whether the latest version is installed, first check the repo for what the latest version is
    if ($RequiredVersion -eq 'latest') {
        $RequiredVersion = $(Find-WinGetPackage -Name $Name).Version
    }

    # Convert the PSCustomObject output from Cobalt into PackageManagement SWIDs, then filter results by version requirements
    # This provides wildcard search behavior for locally installed packages, which WinGet lacks
    Cobalt\Get-WinGetPackage |
        Where-Object {-Not $Name -Or ($_.ID -Like $Name)} |
            Where-Object {Test-PackageVersion -Package $_ -RequiredVersion $RequiredVersion -MinimumVersion $MinimumVersion -MaximumVersion $MaximumVersion} |
                ConvertTo-SoftwareIdentity
}