namespace PS.IPAM.Cmdlets; using System; using System.Collections.Generic; using System.Management.Automation; using PS.IPAM.Helpers; /// /// Retrieves section information from phpIPAM. /// [Cmdlet(VerbsCommon.Get, "Section", DefaultParameterSetName = "NoParams")] [OutputType(typeof(Section))] public class GetSectionCmdlet : BaseCmdlet { [Parameter( Mandatory = false, ValueFromPipeline = true, Position = 0, ParameterSetName = "ByID", HelpMessage = "The section ID.")] [ValidateNotNullOrEmpty] public int? Id { get; set; } [Parameter( Mandatory = true, ValueFromPipeline = true, Position = 0, ParameterSetName = "ByName", HelpMessage = "The section name.")] [ValidateNotNullOrEmpty] public string? Name { get; set; } protected override void ProcessRecord() { try { var identifiers = new List(); if (ParameterSetName == "ByID" && Id.HasValue) { identifiers.Add(Id.Value.ToString()); } else if (ParameterSetName == "ByName") { identifiers.Add(Name!); } var result = RequestHelper.InvokeRequest( "GET", ApiController.Sections, ModelType.Section, null, null, identifiers.Count > 0 ? identifiers.ToArray() : null ).GetAwaiter().GetResult(); WriteResult(result); } catch (Exception ex) { WriteError(new ErrorRecord(ex, "GetSectionError", ErrorCategory.InvalidOperation, null)); } } }