Public/Set-PatDefaultServer.ps1
|
function Set-PatDefaultServer { <# .SYNOPSIS Sets the default Plex server. .DESCRIPTION Marks a specific server as the default server in the configuration. Clears the default flag from all other servers. .PARAMETER Name Name of the server to mark as default .PARAMETER PassThru If specified, returns the server configuration object after setting as default. .EXAMPLE Set-PatDefaultServer -Name "Main Server" Marks "Main Server" as the default server. .EXAMPLE Set-PatDefaultServer -Name "Main Server" -PassThru Marks "Main Server" as default and returns the server configuration. #> [CmdletBinding(SupportsShouldProcess, ConfirmImpact = 'Low')] param ( [Parameter(Mandatory = $true)] [ValidateNotNullOrEmpty()] [string] $Name, [Parameter(Mandatory = $false)] [switch] $PassThru ) try { $config = Get-PatServerConfig -ErrorAction Stop $server = $config.servers | Where-Object { $_.name -eq $Name } if (-not $server) { throw "No server found with name '$Name'" } if ($PSCmdlet.ShouldProcess($Name, 'Set as default server')) { # Unset all defaults foreach ($s in $config.servers) { $s.default = $false } # Set new default $server.default = $true Set-PatServerConfig -Config $config -ErrorAction Stop Write-Verbose "Set '$Name' as default server" if ($PassThru) { $server } } } catch { throw "Failed to set default server: $($_.Exception.Message)" } } |