public/Get-UnraidPlugin.ps1

function Get-UnraidPlugin {
    <#
    .SYNOPSIS
        Lists installed plugins.

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

    .EXAMPLE
        Get-UnraidPlugin
    #>

    [CmdletBinding()]
    [OutputType("UnraidPlugin")]
    param(
        [Parameter()]
        [UnraidSession]$Session = $script:DefaultUnraidSession
    )

    process {
        $gqlQuery = @"
        query GetPlugins {
            plugins {
                name
                version
                hasApiModule
                hasCliModule
            }
        }
"@


        Write-Verbose "Fetching installed plugins..."
        $result = Invoke-UnraidQuery -Query $gqlQuery -Session $Session 

        if ($result.plugins) {

            #Todo: Create UnraidPlugin class?
            $pluginList = [System.Collections.Generic.List[UnraidPlugin]]::new()
            
            foreach ($pluginData in $result.plugins) {
                $pluginList.Add([UnraidPlugin]::new($pluginData))
            }
            
            return $pluginList
        }
    }
}