public/Get-UnraidArray.ps1

function Get-UnraidArray {
    <#
    .SYNOPSIS
        Gets array status and disk information.

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

    .OUTPUTS
        UnraidArray. Object with array state, capacity, parity info, and disk details.

    .EXAMPLE
        Get-UnraidArray
        View array status and disk usage.
    #>

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

    process {
        $gqlQuery = @"
        query ArrayStatus {
            array {
                state
                capacity {
                    kilobytes { total used free }
                    disks { total used free }
                }
                parityCheckStatus {
                    status progress speed errors correcting date duration
                }
                boot {
                    device size status
                }
                disks {
                    name device size fsType fsUsed fsFree temp status
                    numErrors numReads numWrites rotational exportable transport
                }
                parities {
                    name device size status temp
                    numErrors numReads numWrites exportable transport
                }
                caches { name device size fsUsed fsFree temp status numErrors rotational numReads numWrites exportable transport }
            }
        }
"@

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

        if ($result.array) { return [UnraidArray]::new($result.array) }
    }
}