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 } } |