Public/Remove-SonarrSeries.ps1
|
function Remove-SonarrSeries { <# .SYNOPSIS Removes a series from Sonarr. .SYNTAX Remove-SonarrSeries -Id <String> [-DeleteFiles] [-AddImportListExclusion] [-WhatIf] [-Confirm] [<CommonParameters>] .DESCRIPTION Removes a series from Sonarr using the series ID. This function supports WhatIf and Confirm parameters for safe execution. Optionally can delete associated files and add the series to import list exclusions. .PARAMETER Id The Sonarr series ID to remove. Accepts pipeline input by property name. .PARAMETER DeleteFiles If specified, deletes the actual video files associated with the series from disk. .PARAMETER AddImportListExclusion If specified, adds the series to import list exclusions to prevent it from being re-added automatically. .EXAMPLE Remove-SonarrSeries -Id '123' .EXAMPLE Remove-SonarrSeries -Id '123' -DeleteFiles .EXAMPLE Remove-SonarrSeries -Id '123' -DeleteFiles -AddImportListExclusion .EXAMPLE Get-SonarrSeries -Name 'Old Show' | Remove-SonarrSeries -DeleteFiles .EXAMPLE Remove-SonarrSeries -Id '123' -WhatIf .NOTES This function supports pipeline input and confirmation prompts for safe series removal. Use -DeleteFiles with caution as it will permanently delete video files from disk. #> [CmdletBinding(SupportsShouldProcess)] param( [Parameter(Mandatory, ValueFromPipelineByPropertyName)] [String]$Id, [Parameter(Mandatory = $false)] [Switch]$DeleteFiles, [Parameter(Mandatory = $false)] [Switch]$AddImportListExclusion ) begin { #################################################################################################### #Region Import configuration try { Import-Configuration -ErrorAction Stop } catch { throw $_ } #EndRegion } process { #################################################################################################### #Region Define the path and parameters try { $Path = '/series/' + $Id # Build query parameters based on switches $Params = @{ deleteFiles = $DeleteFiles.ToString().ToLower() addImportListExclusion = $AddImportListExclusion.ToString().ToLower() } } catch { throw $_ } #EndRegion #################################################################################################### #Region make the main request $ActionDescription = "Series with ID: $Id" if($DeleteFiles) { $ActionDescription += " (including files)" } if($AddImportListExclusion) { $ActionDescription += " (adding to import exclusions)" } if($PSCmdlet.ShouldProcess($ActionDescription, "Remove")) { Write-Verbose -Message "Removing series with ID $Id $(if($DeleteFiles){'and deleting files '})$(if($AddImportListExclusion){'and adding to import exclusions'})" try { Invoke-SonarrRequest -Path $Path -Method DELETE -Params $Params -ErrorAction Stop | Out-Null } catch { throw $_ } } #EndRegion } } |