public/Get-UnraidShare.ps1

function Get-UnraidShare {
    <#
    .SYNOPSIS
        Lists user shares and their disk usage.

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

    .EXAMPLE
        Get-UnraidShare
    #>

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

    process {
        $gqlQuery = @"
        query GetShares {
            shares {
                name
                comment
                free
                used
                size
                allocator
                splitLevel
                floor
                cache
                include
                exclude
                cow
                luksStatus
            }
        }
"@


        Write-Verbose "Fetching share list..."
        $result = Invoke-UnraidQuery -Query $gqlQuery -Session $Session 

        $shareList = [System.Collections.Generic.List[UnraidShare]]::new()

        if ($result.shares) {
            foreach ($shareData in $result.shares) {
                $shareObj = [UnraidShare]::new($shareData)
                $shareList.Add($shareObj)
            }
        }

        return $shareList
    }
}