Public/Get-SonarrIndexer.ps1

function Get-SonarrIndexer
{
    <#
        .SYNOPSIS
            Gets indexer configuration from Sonarr.

        .DESCRIPTION
            Returns configured indexers in Sonarr. Can filter by indexer ID or name.

        .PARAMETER Id
            The ID of a specific indexer to retrieve.

        .PARAMETER Name
            The name of a specific indexer to retrieve. Supports wildcards.

        .EXAMPLE
            Get-SonarrIndexer

            Returns all configured indexers from the default Sonarr server.

        .EXAMPLE
            Get-SonarrIndexer -Id 1

            Returns the indexer with ID 1.

        .EXAMPLE
            Get-SonarrIndexer -Name "NZBgeek"

            Returns the indexer named "NZBgeek".

        .EXAMPLE
            Get-SonarrIndexer -Name "*Usenet*"

            Returns all indexers with "Usenet" in their name.
    #>

    [CmdletBinding(DefaultParameterSetName = 'All')]
    param (
        [Parameter(Mandatory = $true, ParameterSetName = 'Id', ValueFromPipelineByPropertyName = $true)]
        [int]$Id,

        [Parameter(Mandatory = $true, ParameterSetName = 'Name')]
        [string]$Name
    )

    ####################################################################################################
    #Region Import configuration
    try
    {
        Import-Configuration -ErrorAction Stop
    }
    catch
    {
        throw $_
    }
    #EndRegion


    ####################################################################################################
    #Region make the main request
    try
    {
        $Path = '/indexer'

        if($PSCmdlet.ParameterSetName -eq 'Id')
        {
            $Path += "/$Id"
        }

        $Data = Invoke-SonarrRequest -Path $Path -Method GET -ErrorAction Stop

        if($PSCmdlet.ParameterSetName -eq 'Name')
        {
            $Data = $Data | Where-Object { $_.name -like $Name }
        }

        return $Data
    }
    catch
    {
        throw $_
    }
    #EndRegion
}