private/ConvertTo-VSAQueryString.ps1
|
function ConvertTo-VSAQueryString { <# .SYNOPSIS Builds a URL query string from a hashtable, URL-encoding each value (not the key). .DESCRIPTION OData parameter names such as $filter, $orderby, $skip, $top must be transmitted literally, so only the value is percent-encoded via [uri]::EscapeDataString. This is what lets a legitimate filter containing quotes, parentheses, commas and spaces pass through unchanged except for URL-encoding. #> [CmdletBinding()] param( [parameter(Mandatory = $true)] [hashtable] $Parameters ) $pairs = foreach ($key in $Parameters.Keys) { '{0}={1}' -f $key, [uri]::EscapeDataString([string]$Parameters[$key]) } return ($pairs -join '&') } |