-
-
Save joshooaj/1f2ca6153b2085a9e028e9860f209c9a to your computer and use it in GitHub Desktop.
Creates a querystring to use with an API call
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
function New-QueryString { | |
<# | |
.SYNOPSIS | |
Turn a hashtable into a URI querystring | |
.DESCRIPTION | |
Turn a hashtable into a URI querystring | |
.PARAMETER QueryParameter | |
The hashtable to transform | |
.EXAMPLE | |
New-QueryString -QueryParameter @{ Animal = 'Dog'; Breed = 'Labrador'; Name = 'Dilbert'} | |
.EXAMPLE | |
New-QueryString -QueryParameter @{ Animal = 'Dog'; Breed = 'Labrador', 'Retriever'; Name = 'Dilbert'} | |
.EXAMPLE | |
New-QueryString -QueryParameter ([ordered]@{ Animal = 'Dog'; Breed = 'Labrador', 'Retriever'; Name = 'Dilbert'}) | |
.NOTES | |
Shamelessly taken from https://powershellmagazine.com/2019/06/14/pstip-a-better-way-to-generate-http-query-strings-in-powershell/ | |
#> | |
[CmdletBinding()] | |
param | |
( | |
[Parameter(Mandatory = $true)] | |
[System.Collections.IDictionary] | |
$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].GetType().ImplementedInterfaces.Contains([System.Collections.ICollection])) { | |
foreach ($record in $QueryParameter[$key]) { | |
$nvCollection.Add($key, $record) | |
} | |
} else { | |
$nvCollection.Add($key, $QueryParameter.$key) | |
} | |
} | |
return $nvCollection.ToString() | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment