namespace PS.IPAM.Cmdlets; using System; using System.Collections.Generic; using System.Management.Automation; using PS.IPAM.Helpers; /// /// Retrieves tag information from phpIPAM. /// [Cmdlet(VerbsCommon.Get, "Tag", DefaultParameterSetName = "NoParams")] [OutputType(typeof(Tag))] public class GetTagCmdlet : BaseCmdlet { [Parameter( Mandatory = false, ValueFromPipeline = true, ValueFromPipelineByPropertyName = true, Position = 0, ParameterSetName = "ByID", HelpMessage = "The tag ID.")] [ValidateNotNullOrEmpty] public int? Id { get; set; } [Parameter( Mandatory = false, ValueFromPipeline = true, ValueFromPipelineByPropertyName = true, Position = 0, ParameterSetName = "ByAddressObject", HelpMessage = "Get the tag associated with this address.")] [ValidateNotNullOrEmpty] public Address? AddressObject { get; set; } [Parameter( Mandatory = false, ValueFromPipeline = true, ValueFromPipelineByPropertyName = true, Position = 0, ParameterSetName = "BySubnetObject", HelpMessage = "Get the tag associated with this subnet.")] [ValidateNotNullOrEmpty] public Subnetwork? SubnetObject { get; set; } protected override void ProcessRecord() { try { var identifiers = new List { "tags" }; switch (ParameterSetName) { case "ByID": if (Id.HasValue) { identifiers.Add(Id.Value.ToString()); } break; case "ByAddressObject": if (AddressObject?.TagId > 0) { identifiers.Add(AddressObject.TagId.ToString()); } else { return; } break; case "BySubnetObject": if (SubnetObject?.TagId > 0) { identifiers.Add(SubnetObject.TagId.ToString()); } else { return; } break; } var result = RequestHelper.InvokeRequest( "GET", ApiController.Addresses, ModelType.Tag, null, null, identifiers.ToArray() ).GetAwaiter().GetResult(); WriteResult(result); } catch (Exception ex) { WriteError(new ErrorRecord(ex, "GetTagError", ErrorCategory.InvalidOperation, null)); } } }