public/Get-UnraidUps.ps1
|
function Get-UnraidUps { <# .SYNOPSIS Gets UPS (Uninterruptible Power Supply) status and metrics. .DESCRIPTION Returns UPS device information including battery status, load, runtime estimates, and power quality metrics. .PARAMETER Session Unraid session to use (defaults to the current session). .OUTPUTS UnraidUps[]. Array of UPS devices. .EXAMPLE Get-UnraidUps View current UPS status. #> [CmdletBinding()] [OutputType("UnraidUps")] param( [Parameter()] [UnraidSession]$Session = $script:DefaultUnraidSession ) process { $gqlQuery = @" query GetUps { upsDevices { id name model status battery { chargeLevel estimatedRuntime } power { loadPercentage inputVoltage outputVoltage } } } "@ try { $result = Invoke-UnraidQuery -Query $gqlQuery -Session $Session if ($result.upsDevices) { foreach ($deviceData in $result.upsDevices) { [UnraidUps]::new($deviceData) } } } catch { # Handle specific backend errors where UPS service might be stopped or unconfigured if ($_.Exception.Message -match "No UPS data") { Write-Warning "Unraid reports no UPS data available. Please verify the UPS is connected and settings are configured in the Unraid WebUI." } else { # Re-throw unanticipated errors throw } } } } |