public/Get-UnraidContainer.ps1

function Get-UnraidContainer {
    <#
    .SYNOPSIS
        Lists Docker containers.

    .PARAMETER Name
        Filter by name (supports wildcards).

    .PARAMETER Session
        Unraid session (defaults to current session).

    .EXAMPLE
        Get-UnraidContainer

    .EXAMPLE
        Get-UnraidContainer -Name "*arr"
    #>

    [CmdletBinding()]
    [OutputType("UnraidContainer")]
    param(
        [Parameter(Position = 0, ValueFromPipeline, ValueFromPipelineByPropertyName)]
        [string[]]$Name,

        [Parameter()]
        [UnraidSession]$Session = $script:DefaultUnraidSession
    )

    process {
        $gqlQuery = @"
        query DockerDetails {
            server {
                lanip
            }
            docker {
                containers {
                    id names image imageId command created sizeRootFs
                    state status autoStart labels networkSettings mounts
                    hostConfig {
                        networkMode
                    }
                    ports { publicPort privatePort type }
                }
            }
        }
"@

        $result = Invoke-UnraidQuery -Query $gqlQuery -Session $Session 

        $serverIp = $result.server.lanip
        $containerList = [System.Collections.Generic.List[UnraidContainer]]::new()

        if ($result.docker.containers) {
            foreach ($containerData in $result.docker.containers) {
                $containerObj = [UnraidContainer]::new($containerData, $serverIp)

                $shouldOutput = $false

                if (!$Name) { $shouldOutput = $true }
                else {
                    foreach ($filterName in $Name) {
                        if ($containerObj.Name -like "*$filterName*") {
                            $shouldOutput = $true
                            break
                        }
                    }
                }

                if ($shouldOutput) { $containerList.Add($containerObj) } 
            }
        }

        $containerList | Sort-Object Name
    }
}