Private/Add-KB4QueryParameter.ps1

function Add-KB4QueryParameter
{
    [CmdletBinding()]
    param(
        [Parameter(Mandatory)]
        [hashtable] $Query,

        [Parameter(Mandatory)]
        [string] $Name,

        [Parameter()]
        [AllowNull()]
        [object] $Value
    )

    if ($null -eq $Value)
    {
        return
    }

    if ($Value -is [string] -and [string]::IsNullOrWhiteSpace($Value))
    {
        return
    }

    # Optional integer parameters default to 0 when not bound; do not send those.
    if ($Value -is [ValueType] -and $Value -eq 0)
    {
        return
    }

    if ($Value -is [switch])
    {
        if (-not $Value.IsPresent)
        {
            return
        }

        $Query[$Name] = $true
        return
    }

    $Query[$Name] = $Value
}