functions/public/Get-KlippyPrinter.ps1
|
function Get-KlippyPrinter { <# .SYNOPSIS Gets registered Klipper printers from the local registry. .DESCRIPTION Retrieves printer configurations from the KlippyCLI registry. Can retrieve all printers, a specific printer by Id or name, or the default printer. .PARAMETER Id The unique identifier (GUID) of the printer to retrieve. .PARAMETER PrinterName The friendly name of the printer to retrieve. .PARAMETER Default Return only the default printer. .EXAMPLE Get-KlippyPrinter Returns all registered printers. .EXAMPLE Get-KlippyPrinter -PrinterName "MyPrinter" Returns the printer named "MyPrinter". .EXAMPLE Get-KlippyPrinter -Default Returns the default printer. .OUTPUTS PSCustomObject[] - Array of printer objects, or a single printer object. #> [CmdletBinding(DefaultParameterSetName = 'All')] [OutputType([PSCustomObject[]])] param( [Parameter(Mandatory = $true, ParameterSetName = 'ById')] [ValidateNotNullOrEmpty()] [string]$Id, [Parameter(Mandatory = $true, ParameterSetName = 'ByName')] [ValidateNotNullOrEmpty()] [string]$PrinterName, [Parameter(Mandatory = $true, ParameterSetName = 'Default')] [switch]$Default ) $printers = Read-KlippyPrinterRegistry switch ($PSCmdlet.ParameterSetName) { 'All' { return $printers } 'ById' { $printer = $printers | Where-Object { $_.Id -eq $Id } if (-not $printer) { Write-Error "Printer with Id '$Id' not found." return } return $printer } 'ByName' { $printer = $printers | Where-Object { $_.PrinterName -ieq $PrinterName } if (-not $printer) { Write-Error "Printer with name '$PrinterName' not found." return } return $printer } 'Default' { $defaultPrinter = $printers | Where-Object { $_.IsDefault -eq $true } if (-not $defaultPrinter) { Write-Warning "No default printer configured." return } return $defaultPrinter } } } |