Public/Get-LMActionRule.ps1
|
<# .SYNOPSIS Retrieves action rules from LogicMonitor. .DESCRIPTION The Get-LMActionRule function retrieves action rules from LogicMonitor based on specified criteria. It can return a single rule by ID or name, or multiple rules using filters. .PARAMETER Id The ID of the action rule to retrieve. .PARAMETER Name The name of the action rule to retrieve. .PARAMETER Filter A filter object to apply when retrieving action rules. .PARAMETER BatchSize The number of results to return per request. Must be between 1 and 1000. Defaults to 1000. .EXAMPLE Get-LMActionRule -Id 123 .EXAMPLE Get-LMActionRule -Name "Disk Remediation Rule" .NOTES You must run Connect-LMAccount before running this command. .INPUTS None. You cannot pipe objects to this command. .OUTPUTS Returns LogicMonitor.ActionRule objects. #> function Get-LMActionRule { [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSReviewUnusedParameter', '', Justification = 'Parameters are referenced inside pagination/cursor script blocks')] [CmdletBinding(DefaultParameterSetName = 'All')] param ( [Parameter(ParameterSetName = 'Id')] [Int]$Id, [Parameter(ParameterSetName = 'Name')] [String]$Name, [Parameter(ParameterSetName = 'Filter')] [Object]$Filter, [ValidateRange(1, 1000)] [Int]$BatchSize = 1000 ) if ($Script:LMAuth.Valid) { $ResourcePath = "/setting/action/rules" $ParameterSetName = $PSCmdlet.ParameterSetName $SingleObjectWhenNotPaged = $ParameterSetName -eq "Id" $CommandInvocation = $MyInvocation $CallerPSCmdlet = $PSCmdlet $Results = Invoke-LMPaginatedGet -BatchSize $BatchSize -SingleObjectWhenNotPaged:$SingleObjectWhenNotPaged -InvokeRequest { param($Offset, $PageSize) $RequestResourcePath = $ResourcePath $QueryParams = "" switch ($ParameterSetName) { "All" { $QueryParams = "?size=$PageSize&offset=$Offset&sort=+id" } "Id" { $RequestResourcePath = "$ResourcePath/$Id" } "Name" { $QueryParams = "?filter=name:`"$Name`"&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 $CommandInvocation $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 (Add-ObjectTypeInfo -InputObject $Results -TypeName "LogicMonitor.ActionRule") } else { Write-Error "Please ensure you are logged in before running any commands, use Connect-LMAccount to login and try again." } } |