Private/New-HTTPQueryString.ps1

function New-HttpQueryString {
    [CmdletBinding()]
    param (
        [Parameter(Mandatory = $true)]
        [string]$Uri,
        [Parameter(Mandatory = $true)]
        [hashtable]$QueryParameter
    )
    # Add System.Web
    Add-Type -AssemblyName System.Web

    # Create a http name value collection from an empty string
    $nvCollection = [System.Web.HttpUtility]::ParseQueryString([String]::Empty)

    foreach ($key in $QueryParameter.Keys) {
        if ($QueryParameter.$key -is [array]) {
            foreach ($QP in $QueryParameter.$key) {
                $nvCollection.Add($key, $QP)
            }
        } else {
            $nvCollection.Add($key, $QueryParameter.$key)
        }
    }

    # Build the uri
    $uriRequest = [System.UriBuilder]$Uri
    $uriRequest.Query = $nvCollection.ToString()

    Write-Verbose -Message $uriRequest.Uri.OriginalString

    return $uriRequest.Uri.OriginalString
}