Private/Get-WindowsLicensingProduct.ps1

function Get-WindowsLicensingProduct
{
    [OutputType([CimInstance])]
    [CmdletBinding()]
    param(
        [Microsoft.Management.Infrastructure.CimSession]$CimSession
    )

    # ApplicationID '55c92734-d682-4d71-983e-d6ec3f16059f' is the Windows OS licensing application.
    # PartialProductKey IS NOT NULL ensures a product key is actually installed (excludes evaluation stubs).
    $query = "SELECT Name, Description, ID, ApplicationID, ProductKeyID, ProductKeyChannel,
    OfflineInstallationId, UseLicenseURL, ValidationURL, PartialProductKey,
    LicenseStatus, GracePeriodRemaining, RemainingAppReArmCount, RemainingSkuReArmCount, TrustedTime
    FROM SoftwareLicensingProduct
    WHERE ApplicationID = '55c92734-d682-4d71-983e-d6ec3f16059f'
    AND PartialProductKey IS NOT NULL"


    $candidates = @(Get-CimInstance -CimSession $CimSession -Query $query)

    if ($candidates.Count -eq 0)
    {
        throw 'No Windows licensing product with an installed product key was found. The system may be running an evaluation edition or have no key installed.'
    }

    if ($candidates.Count -eq 1)
    {
        return $candidates[0]
    }

    # Multiple products can appear after in-place upgrades. Prefer Licensed, then any active state.
    $licensed = @($candidates | Where-Object { $_.LicenseStatus -eq 1 })
    if ($licensed.Count -eq 1) { return $licensed[0] }

    $active = @($candidates | Where-Object { $_.LicenseStatus -ne 0 })
    if ($active.Count -eq 1) { return $active[0] }

    $summary = ($candidates | ForEach-Object { "'$($_.Name)' (status $($_.LicenseStatus))" }) -join ', '
    throw "Multiple Windows licensing products found and none can be selected unambiguously: $summary. Remove duplicate product registrations or contact your administrator."
}