Functions/Search-LSTickets.ps1
|
function Search-LSTickets { Param ( [Parameter(Mandatory=$true)] [String]$Url, [Int]$MaxResults, [String]$State, [String]$Priority, [Int]$FromUserId, [Int]$AgentId, [Bool]$Flagged, [DateTime]$MinDate, [DateTime]$MaxDate, [String]$Description, [String]$Subject, [String]$Type ) # Base parameters for url $params = @{ action = 'SearchTickets' } # Add optional search filters if used if($MaxResults) {$params.MaxResults = $MaxResults} if($State) {$params.State = $State} if($Priority) {$params.Priority = $Priority} if($FromUserId) {$params.FromUserId = $FromUserId} if($AgentId) {$params.AgentId = $AgentId} if($Flagged) {$params.Flagged = $Flagged} if($MinDate) {$params.MinDate = $MinDate} if($MaxDate) {$params.MaxDate = $MaxDate} if($Description) {$params.Description = $Description} if($Subject) {$params.Subject = $Subject} if($Type) {$params.Type = $Type} # Building query string $queryString = ($params.GetEnumerator() | ForEach-Object { '{0}={1}' -f [uri]::EscapeDataString($_.Key), [uri]::EscapeDataString([string]$_.Value) }) -join '&' $fullUrl = '{0}{1}' -f $Url, $queryString # Search for tickets using filters in parameter $Request = Invoke-WebRequest -Uri $fullUrl -UseBasicParsing # Checking response if($Request.StatusCode -ne 200) { throw ("{0} {1}" -f $Request.StatusCode, $Request.StatusDescription) } if(-not (($Request.Content | ConvertFrom-Json).Success)) { Write-Error "Search was not successful." return $Request } return ($Request.Content | ConvertFrom-Json) } |