Public/Get-LMCollectorVersion.ps1
|
<# .SYNOPSIS Retrieves available LogicMonitor collector versions. .DESCRIPTION The Get-LMCollectorVersions function retrieves information about available LogicMonitor collector versions. It can return all versions, top versions only, or versions filtered by specific criteria. .PARAMETER Filter A filter object to apply when retrieving collector versions. This parameter is part of a mutually exclusive parameter set. .PARAMETER TopVersions Switch to retrieve only the top versions of collectors. This parameter is part of a mutually exclusive parameter set. .PARAMETER BatchSize The number of results to return per request. Must be between 1 and 1000. Defaults to 1000. .EXAMPLE #Retrieve all collector versions Get-LMCollectorVersions .EXAMPLE #Retrieve only top versions Get-LMCollectorVersions -TopVersions .NOTES You must run Connect-LMAccount before running this command. .INPUTS None. You cannot pipe objects to this command. .OUTPUTS Returns an array of collector version objects. #> function Get-LMCollectorVersion { [CmdletBinding(DefaultParameterSetName = 'All')] [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSReviewUnusedParameter', '', Justification = 'Required for the TopVersions to work')] param ( [Parameter(ParameterSetName = 'Filter')] [Object]$Filter, [Parameter(ParameterSetName = 'Top')] [Switch]$TopVersions, [ValidateRange(1, 1000)] [Int]$BatchSize = 1000 ) #Check if we are logged in and have valid api creds if ($Script:LMAuth.Valid) { #Build header and uri $ResourcePath = "/setting/collector/collectors/versions" $ParameterSetName = $PSCmdlet.ParameterSetName $CallerPSCmdlet = $PSCmdlet $Results = Invoke-LMPaginatedGet -BatchSize $BatchSize -InvokeRequest { param($Offset, $PageSize) $RequestResourcePath = $ResourcePath $QueryParams = "" switch ($ParameterSetName) { "All" { $QueryParams = "?size=$PageSize&offset=$Offset&sort=+id" } "Top" { $QueryParams = "?topVersions=true&size=$PageSize&offset=$Offset&sort=+id" } "Filter" { $ValidFilter = Format-LMFilter -Filter $Filter -ResourcePath $ResourcePath $QueryParams = "?filter=$ValidFilter&size=$PageSize&offset=$Offset&sort=+id" } } $Headers = New-LMHeader -Auth $Script:LMAuth -Method "GET" -ResourcePath $RequestResourcePath $Uri = "https://$($Script:LMAuth.Portal).$(Get-LMPortalURI)" + $RequestResourcePath + $QueryParams Resolve-LMDebugInfo -Url $Uri -Headers $Headers[0] -Command $MyInvocation $Response = Invoke-LMRestMethod -CallerPSCmdlet $CallerPSCmdlet -Uri $Uri -Method "GET" -Headers $Headers[0] -WebSession $Headers[1] if ($null -eq $Response) { return $null } return $Response } if ($null -eq $Results) { return } return $Results } else { Write-Error "Please ensure you are logged in before running any commands, use Connect-LMAccount to login and try again." } } |