Private/HashFunctions/Get-JCHash.ps1
Function Get-JCHash() { [CmdletBinding(DefaultParameterSetName = 'Default')] Param( [Parameter(Mandatory = $true, ValueFromPipelineByPropertyName = $true, Position = 0)][ValidateNotNullOrEmpty()][string]$Url, [Parameter(Mandatory = $true, ValueFromPipelineByPropertyName = $true, Position = 1)][ValidateNotNullOrEmpty()][string]$Method, [Parameter(Mandatory = $true, ValueFromPipelineByPropertyName = $true, Position = 2)][ValidateNotNullOrEmpty()][string]$Key, [Parameter(Mandatory = $false, ValueFromPipelineByPropertyName = $true, Position = 3)][ValidateNotNullOrEmpty()][array]$Values = @(), [Parameter(Mandatory = $false, ValueFromPipelineByPropertyName = $true, Position = 4)][ValidateNotNullOrEmpty()][string]$Body = '', [Parameter(Mandatory = $false, ValueFromPipelineByPropertyName = $true, Position = 5)][ValidateNotNullOrEmpty()][int]$Limit = 100, [Parameter(Mandatory = $false, ValueFromPipelineByPropertyName = $true, Position = 6)][ValidateNotNullOrEmpty()][int]$Skip = 0 ) Begin { Write-Verbose ('Parameter Set: ' + $PSCmdlet.ParameterSetName) } Process { # Add key to values If ($Values) {$Values += $Key} $DataSet = Invoke-JCApi -Url:($Url) -Method:($Method) -Fields:($Values) -Body:($Body) -Paginate:($true) -Limit:($Limit) -Skip:($Skip) #Convert $DataSet from Object to Hashtable with Object data as Values to make searchable $Hashtable = New-Object System.Collections.Hashtable ForEach ($Item In $DataSet) { $Hashtable.Add($Item.$Key, $Item) } } End { Return $Hashtable } } |