functions/Remove-MForgeTemplate.ps1
| function Remove-MForgeTemplate { <# .SYNOPSIS Removes MailForge template objects by name or cleans up orphaned temporary templates. .DESCRIPTION This function removes MailForge template objects. You can either specify a template name to remove a specific template, or use the -Orphan switch to remove all orphaned temporary templates (those tagged as 'TemporaryMForgeTemplate'). The parameters -TemplateName and -Orphan are mutually exclusive and must be used in separate parameter sets. .PARAMETER TemplateName The name of the MailForge template to remove. Only templates registered via Register-MForgeTemplate can be removed. Mandatory when using the ByName parameter set. .PARAMETER Orphan Removes all orphaned temporary templates. Mandatory when using the Orphan parameter set. .EXAMPLE Remove-MForgeTemplateOrphan -TemplateName "WelcomeMail" Removes the template named "WelcomeMail". .EXAMPLE Remove-MForgeTemplateOrphan -Orphan Removes all orphaned temporary MailForge templates. #> [CmdletBinding(DefaultParameterSetName = 'ByName')] [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseShouldProcessforStateChangingFunctions', '')] param ( [Parameter(ParameterSetName = 'ByName', Mandatory = $true)] [PsfArgumentCompleter('MForgeTemplateNames')] [PsfValidateSet(TabCompletion = 'MForgeTemplateNames')] $TemplateName, [Parameter(ParameterSetName = 'Orphan', Mandatory = $true)] [switch]$Orphan ) if ($Orphan) { Get-PSMDTemplate -ErrorAction SilentlyContinue | Where-Object { $_.Tags -contains 'TemporaryMForgeTemplate' } | ForEach-Object { Write-PSFMessage "Removing orphaned temporary template $($_.Name)" -Level Host Remove-PSMDTemplate -TemplateName $_.Name -Confirm:$false -ErrorAction SilentlyContinue } } else { Remove-PSMDTemplate -TemplateName $TemplateName } } |