Public/Get-LMActionChain.ps1
|
<# .SYNOPSIS Retrieves action chains from LogicMonitor. .DESCRIPTION The Get-LMActionChain function retrieves action chain configurations from LogicMonitor. It can retrieve all chains, a specific chain by ID or name, or filter the results. .PARAMETER Id The ID of the specific action chain to retrieve. .PARAMETER Name The name of the specific action chain to retrieve. .PARAMETER Filter A filter object to apply when retrieving action chains. .PARAMETER BatchSize The number of results to return per request. Must be between 1 and 1000. Defaults to 1000. .EXAMPLE Get-LMActionChain .EXAMPLE Get-LMActionChain -Name "Disk-Remediation-Chain" .NOTES You must run Connect-LMAccount before running this command. .INPUTS None. You cannot pipe objects to this command. .OUTPUTS Returns LogicMonitor.ActionChain objects. #> function Get-LMActionChain { [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/chains" $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.ActionChain") } else { Write-Error "Please ensure you are logged in before running any commands, use Connect-LMAccount to login and try again." } } |