Public/Clear-PatDefaultServer.ps1
|
function Clear-PatDefaultServer { <# .SYNOPSIS Clears the default Plex server designation. .DESCRIPTION Removes the default flag from all configured servers. After clearing the default server, cmdlets will require an explicit -ServerUri parameter. This is useful when you want to ensure explicit server selection in scripts or when managing multiple servers where no single default is appropriate. .PARAMETER PassThru If specified, returns the updated server configuration objects after clearing the default. .EXAMPLE Clear-PatDefaultServer Clears the default server designation. All cmdlets will now require -ServerUri. .EXAMPLE Clear-PatDefaultServer -PassThru Clears the default server and returns all server configurations. .EXAMPLE Clear-PatDefaultServer -WhatIf Shows what would happen if the default server was cleared without actually clearing it. .OUTPUTS None Or PlexAutomationToolkit.ServerConfig[] if -PassThru is specified .LINK Set-PatDefaultServer .LINK Get-PatStoredServer .LINK Add-PatServer #> [CmdletBinding(SupportsShouldProcess, ConfirmImpact = 'Low')] param ( [Parameter(Mandatory = $false)] [switch] $PassThru ) try { $configuration = Get-PatServerConfiguration -ErrorAction Stop if ($configuration.servers.Count -eq 0) { Write-Warning "No servers configured. Use Add-PatServer to add a server." return } # Check if there's currently a default server $currentDefault = $configuration.servers | Where-Object { $_.default -eq $true } if (-not $currentDefault) { Write-Verbose "No default server is currently set" if ($PassThru) { $configuration.servers } return } if ($PSCmdlet.ShouldProcess("All servers", 'Clear default server designation')) { # Clear all defaults foreach ($server in $configuration.servers) { $server.default = $false } Set-PatServerConfiguration -Configuration $configuration -ErrorAction Stop Write-Verbose "Cleared default server designation from '$($currentDefault.name)'" if ($PassThru) { $configuration.servers } } } catch { throw "Failed to clear default server: $($_.Exception.Message)" } } |