Build and Parse Query Strings with System.Uri in PowerShell
PowerShell
function ConvertTo-QueryString {
param([Parameter(Mandatory)][hashtable]$Parameters)
$pairs = foreach ($entry in ($Parameters.GetEnumerator() | Sort-Object Key)) {
$k = [uri]::EscapeDataString([string]$entry.Key)
$v = [uri]::EscapeDataString([string]$entry.Value)
"$k=$v"
}
$pairs -join '&'
}
function ConvertFrom-QueryString {
param([Parameter(Mandatory)][AllowEmptyString()][string]$Query)
$result = @{}
foreach ($pair in ($Query.TrimStart('?') -split '&')) {
if (-not $pair) { continue }
$key, $value = $pair -split '=', 2
if ($null -eq $value) { $value = '' }
$name = [uri]::UnescapeDataString($key)
$result[$name] = [uri]::UnescapeDataString($value)
}
$result
}