Private/Format-LMFilter-v1.ps1
<# .SYNOPSIS This function formats a filter for Logic Monitor API calls. .DESCRIPTION The Format-LMFilter-v1 function takes a hashtable of filter properties and an optional array of valid properties. It checks if the supplied properties are valid, removes any invalid properties, and then formats the remaining properties into a filter string. .PARAMETER Filter A hashtable of filter properties. This is a mandatory parameter. .PARAMETER PropList An array of valid properties. If this parameter is provided, the function checks the properties in the Filter parameter against this list and removes any that are not valid. .EXAMPLE Format-LMFilter-v1 -Filter $Filter -PropList $PropList This command formats the filter properties represented by the $Filter hashtable into a filter string, removing any properties that are not in the $PropList array. .INPUTS System.Collections.Hashtable, System.String[]. You can pipe a hashtable of filter properties and an array of valid properties to Format-LMFilter-v1. .OUTPUTS System.String. The function returns a string that represents the formatted filter. .NOTES The function does not throw any errors. If a property in the Filter parameter is not in the PropList parameter, it is simply removed from the filter. #> Function Format-LMFilter-v1 { [CmdletBinding()] Param ( [Hashtable]$Filter, [String[]]$PropList ) #Initalize variable for final filter string $FilterString = "" #Check if supplied properties are valid, if no prop list then just assume valid If ($PropList) { Foreach ($Key in $($Filter.keys)) { If ($Key -notin $PropList) { #Remove key since its not a valid filter property $filter.remove($Key) } } } #Create filter string from hash table and url encode foreach ($Key in $($Filter.keys)) { $FilterString += $Key + ":" + "`"$($Filter[$Key])`"" + "," } $FilterString = $FilterString.trimend(',') Return $FilterString } |