Private/New-GCQueryString.ps1

function New-GCQueryString {
    [CmdletBinding()]
    param(
        [Parameter(Mandatory = $true)]
        [hashtable]$Parameters
    )

    $queryParts = @()

    foreach ($key in $Parameters.Keys) {
        $value = $Parameters[$key]
        if ($null -ne $value) {
            if ($value -is [array]) {
                foreach ($item in $value) {
                    $queryParts += "$key=$([uri]::EscapeDataString($item))"
                }
            } elseif ($value -is [bool]) {
                $queryParts += "$key=$($value.ToString().ToLower())"
            } else {
                $queryParts += "$key=$([uri]::EscapeDataString($value.ToString()))"
            }
        }
    }

    if ($queryParts.Count -gt 0) {
        return "?$($queryParts -join '&')"
    }
    return ""
}