Private/Get-ExtendedLicenseInformation.ps1

function Get-ExtendedLicenseInformation
{
    [OutputType([PSCustomObject])]
    [CmdletBinding()]
    param (
        [Microsoft.Management.Infrastructure.CimSession]$CimSession,
        [CimInstance]$Product,
        [CimInstance]$Service
    )

    if ($null -eq $Product)
    {
        $Product = Get-WindowsLicensingProduct -CimSession $CimSession
    }

    $trustedTime = [datetime]::MinValue
    if ($null -ne $Product.TrustedTime)
    {
        $trustedTime = $Product.TrustedTime
    }

    $configuredKmsPort = $Product.KeyManagementServicePort
    if ($configuredKmsPort -eq 0) { $configuredKmsPort = $null }
    $discoveredKmsPort = $Product.DiscoveredKeyManagementServiceMachinePort
    if ($discoveredKmsPort -eq 0) { $discoveredKmsPort = $null }
    $kmsHostCaching = $null
    if ($null -ne $Service -and
        $null -ne $Service.PSObject.Properties['KeyManagementServiceHostCaching'])
    {
        $kmsHostCaching = if ($Service.KeyManagementServiceHostCaching) { 'Enabled' } else { 'Disabled' }
    }

    $result = [PSCustomObject]@{
        Name                       = $Product.Name
        Description                = $Product.Description
        ActivationId               = $Product.ID
        ApplicationId              = $Product.ApplicationID
        ExtendedPid                = $Product.ProductKeyID
        ProductKeyChannel          = $Product.ProductKeyChannel
        InstallationId             = $Product.OfflineInstallationId
        UseLicenseUrl              = $Product.UseLicenseURL
        ValidationUrl              = $Product.ValidationURL
        PartialProductKey          = $Product.PartialProductKey
        LicenseStatus              = [LicenseStatusCode]($Product.LicenseStatus)
        RemainingWindowsRearmCount = $Product.RemainingAppReArmCount
        RemainingSkuRearmCount     = $Product.RemainingSkuReArmCount
        TrustedTime                = $trustedTime
        ConfiguredKmsHost          = $Product.KeyManagementServiceMachine
        ConfiguredKmsPort          = $configuredKmsPort
        DiscoveredKmsHost          = $Product.DiscoveredKeyManagementServiceMachineName
        DiscoveredKmsPort          = $discoveredKmsPort
        KmsLookupDomain            = $Product.KeyManagementServiceLookupDomain
        KmsHostCaching             = $kmsHostCaching
    }
    return $result
}