functions/public/Get-KlippyMoonrakerInfo.ps1
|
function Get-KlippyMoonrakerInfo { <# .SYNOPSIS Gets Moonraker server information from a Klipper printer. .DESCRIPTION Retrieves Moonraker server details including version, API version, registered components, and connection status. .PARAMETER Id The unique identifier of the printer. .PARAMETER PrinterName The friendly name of the printer. .PARAMETER InputObject A printer object from pipeline input. .EXAMPLE Get-KlippyMoonrakerInfo Gets Moonraker info from the default printer. .EXAMPLE Get-KlippyMoonrakerInfo -PrinterName "voronv2" Gets Moonraker info from the specified printer. .EXAMPLE Get-KlippyPrinter | Get-KlippyMoonrakerInfo Gets Moonraker info from all registered printers. .OUTPUTS PSCustomObject with Moonraker server information. #> [CmdletBinding(DefaultParameterSetName = 'Default')] [OutputType([PSCustomObject])] param( [Parameter(Mandatory = $true, ParameterSetName = 'ById')] [ValidateNotNullOrEmpty()] [string]$Id, [Parameter(Mandatory = $true, ParameterSetName = 'ByName', Position = 0)] [ValidateNotNullOrEmpty()] [string]$PrinterName, [Parameter(Mandatory = $true, ParameterSetName = 'ByObject', ValueFromPipeline = $true)] [PSCustomObject]$InputObject ) process { # Resolve printer $resolveParams = @{} switch ($PSCmdlet.ParameterSetName) { 'ById' { $resolveParams['Id'] = $Id } 'ByName' { $resolveParams['PrinterName'] = $PrinterName } 'ByObject' { $resolveParams['InputObject'] = $InputObject } } $printer = Resolve-KlippyPrinterTarget @resolveParams try { Write-Verbose "[$($printer.PrinterName)] Fetching Moonraker info..." $serverInfo = Invoke-KlippyJsonRpc -Printer $printer -Method "server/info" [PSCustomObject]@{ PSTypeName = 'KlippyCLI.MoonrakerInfo' PrinterId = $printer.Id PrinterName = $printer.PrinterName KlippyConnected = $serverInfo.KlippyConnected KlippyState = $serverInfo.KlippyState MoonrakerVersion = $serverInfo.MoonrakerVersion ApiVersion = $serverInfo.ApiVersion ApiVersionText = $serverInfo.ApiVersionText Components = $serverInfo.Components FailedComponents = $serverInfo.FailedComponents RegisteredDirectories = $serverInfo.RegisteredDirectories Warnings = $serverInfo.Warnings } } catch { Write-Error "[$($printer.PrinterName)] Failed to get Moonraker info: $_" } } } |