using System; using System.Collections.Generic; using System.Management.Automation; using PSProxmox.Models; using PSProxmox.Templates; namespace PSProxmox.Cmdlets { /// /// Gets virtual machine templates. /// The Get-ProxmoxVMTemplate cmdlet retrieves virtual machine templates. /// /// Get all templates /// $templates = Get-ProxmoxVMTemplate /// /// /// Get a specific template by name /// $template = Get-ProxmoxVMTemplate -Name "Ubuntu-Template" /// /// [Cmdlet(VerbsCommon.Get, "ProxmoxVMTemplate")] [OutputType(typeof(ProxmoxVMTemplate))] public class GetProxmoxVMTemplateCmdlet : PSCmdlet { /// /// The name of the template to retrieve. /// [Parameter(Mandatory = false, Position = 0)] public string Name { get; set; } /// /// Processes the cmdlet. /// protected override void ProcessRecord() { try { if (string.IsNullOrEmpty(Name)) { // Get all templates var templates = new List(); foreach (var template in TemplateManager.GetTemplates()) { templates.Add(template); } WriteObject(templates, true); } else { // Get a specific template var template = TemplateManager.GetTemplate(Name); WriteObject(template); } } catch (Exception ex) { WriteError(new ErrorRecord(ex, "GetProxmoxVMTemplateError", ErrorCategory.InvalidOperation, Name)); } } } }