Public/Get-RabbitMQChannel.ps1

<#
.Synopsis
   Gets open RabbitMQ Channels.

.DESCRIPTION
   The Get-RabbitMQChannel cmdlet gets list of opened channels.

   The cmdlet allows you to show list of opened channels or filter them by name using wildcards.
   The result may be zero, one or many RabbitMQ.Channel objects.

   To get Nodes from remote server you need to provide -HostName parameter.

   The cmdlet is using REST Api provided by RabbitMQ Management Plugin. For more information go to: https://www.rabbitmq.com/management.html

.EXAMPLE
   Get-RabbitMQChannel

   This command gets a list of opened channels.

.EXAMPLE
   Get-RabbitMQChannel -HostName myrabbitmq.servers.com

   This command gets a list of opened channels to myrabbitmq.servers.com server.

.EXAMPLE
   Get-RabbitMQChannel *53232*

   This command gets a list of all opened channels which name has "53232" number in it.

.EXAMPLE
   Get-RabbitMQChannel -VirtualHost vhost1

   This command gets all opened channels which are using Virtual Host named "vhost1".


.EXAMPLE
   @("*53232*", "*53234*") | Get-RabbitMQChannel

   This command pipes channel name filters to Get-RabbitMQChannel cmdlet.

.INPUTS
   You can pipe channel Name to filter the results.

.OUTPUTS
   By default, the cmdlet returns list of RabbitMQ.Channel objects which describe cluster nodes.

.LINK
    https://www.rabbitmq.com/management.html - information about RabbitMQ management plugin.
#>

function Get-RabbitMQChannel
{
    [CmdletBinding(SupportsShouldProcess=$true, ConfirmImpact='None')]
    Param
    (
        # Name of RabbitMQ Node.
        [parameter(ValueFromPipeline=$true, ValueFromPipelineByPropertyName=$true)]
        [Alias("Channel", "ChannelName")]
        [string[]]$Name = "",
               
        # Name of the computer hosting RabbitMQ server. Defalut value is localhost.
        [parameter(ValueFromPipelineByPropertyName=$true)]
        [Alias("HostName", "hn", "cn")]
        [string]$BaseURI = $defaultComputerName,

        # Name of the virtual host to filter channels by.
        [parameter(ValueFromPipelineByPropertyName=$true)]
        [Alias("vh", "vhost")]
        [string]$VirtualHost,

        # Credentials to use when logging to RabbitMQ server.
        [Parameter(Mandatory=$false)]
        [PSCredential]$Credentials = $defaultCredentials
    )

    Begin
    {
    }
    Process
    {
        if ($pscmdlet.ShouldProcess("server $BaseURI", "Get node(s): $(NamesToString $Name '(all)')"))
        {
            $result = GetItemsFromRabbitMQApi -BaseUri $BaseURI $Credentials "channels"
            
            $result = ApplyFilter $result 'name' $Name
            if ($VirtualHost) { $result = ApplyFilter $result 'vhost' $VirtualHost }

            $result | Add-Member -NotePropertyName "HostName" -NotePropertyValue $BaseURI

            SendItemsToOutput $result "RabbitMQ.Channel"
        }
    }
    End
    {
    }
}