namespace PS.IPAM.Cmdlets; using System; using System.Management.Automation; using PS.IPAM.Helpers; /// /// Removes an IP address entry from phpIPAM. /// [Cmdlet(VerbsCommon.Remove, "Address", DefaultParameterSetName = "ById", SupportsShouldProcess = true)] public class RemoveAddressCmdlet : BaseCmdlet { [Parameter( Mandatory = true, ValueFromPipeline = true, ValueFromPipelineByPropertyName = true, Position = 0, ParameterSetName = "ById", HelpMessage = "The address ID to remove.")] [ValidateNotNullOrEmpty] public int Id { get; set; } [Parameter( Mandatory = true, ValueFromPipeline = true, Position = 0, ParameterSetName = "ByAddressObject", HelpMessage = "The address object to remove.")] [ValidateNotNullOrEmpty] public Address? AddressObject { get; set; } protected override void ProcessRecord() { try { var addressId = ParameterSetName == "ById" ? Id : AddressObject!.Id; var identifiers = new[] { addressId.ToString() }; if (ShouldProcess($"Address ID: {addressId}", "Remove")) { RequestHelper.InvokeRequest( "DELETE", ApiController.Addresses, null, null, null, identifiers ).GetAwaiter().GetResult(); WriteVerbose($"Address {addressId} removed successfully."); } } catch (Exception ex) { WriteError(new ErrorRecord(ex, "RemoveAddressError", ErrorCategory.InvalidOperation, null)); } } }