public/Get-UnraidPhysicalDisk.ps1

function Get-UnraidPhysicalDisk {
    <#
    .SYNOPSIS
        Gets physical disk details and SMART status.

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

    .EXAMPLE
        Get-UnraidPhysicalDisk
    #>

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

    process {
        $graphqlQuery = @"
        query AllDiskDetails {
            disks {
                id name device type vendor serialNum firmwareRevision
                size smartStatus temperature isSpinning interfaceType
                partitions { name fsType size }
            }
        }
"@

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

        # Todo : Create UnraidPhysicalDisk class?
        $physicalDisks = [System.Collections.Generic.List[PSCustomObject]]::new()

        if ($result.disks) {
            foreach ($diskData in $result.disks) {
                
                $physicalDisk = [PSCustomObject]@{
                    Name         = $diskData.name
                    Device       = $diskData.device
                    SerialNum    = $diskData.serialNum
                    Size         = [UnraidSizeFix]::FormatBytes($diskData.size)
                    Temperature  = $diskData.temperature
                    SmartStatus  = $diskData.smartStatus
                    IsSpinning   = $diskData.isSpinning
                    Vendor       = $diskData.vendor
                    Type         = $diskData.type
                    Firmware     = $diskData.firmwareRevision
                    Interface    = $diskData.interfaceType
                    RawSize      = $diskData.size
                    ID           = $diskData.id
                    Partitions   = $diskData.partitions
                }

                $physicalDisk.PSObject.TypeNames.Insert(0, 'Unraid.PhysicalDisk')

                $physicalDisks.Add($physicalDisk)
            }
        }

        $physicalDisks | Sort-Object Device
    }
}