Public/Set-AnyStackVclsRetreatMode.ps1

function Set-AnyStackVclsRetreatMode {
    <#
    .SYNOPSIS
        Sets the vSphere Clustering Service (vCLS) Retreat Mode for a cluster.
    .DESCRIPTION
        Round 7: VCF.ClusterManager. Retreat mode is used to remove vCLS VMs from a cluster for maintenance.
        In vSphere 8.0 U3, this is managed via the ClusterComputeResource configuration.
    #>

    [CmdletBinding(SupportsShouldProcess=$true)]
    param(
        [Parameter(Mandatory=$true)] $Server,
        [Parameter(Mandatory=$true)] [string]$ClusterName,
        [Parameter(Mandatory=$true)] [bool]$Enabled
    )
    process {
        $ErrorActionPreference = 'Stop'
        $action = if ($Enabled) { "Enable Retreat Mode (Remove vCLS)" } else { "Disable Retreat Mode (Restore vCLS)" }
        if ($PSCmdlet.ShouldProcess($ClusterName, $action)) {
            try {
                $clusterView = Get-View -Server $Server -ViewType ClusterComputeResource -Filter @{"Name"="^$ClusterName$"}
                
                # vSphere 8.0 U3 specific logic for embedded vCLS
                Write-Host "[CLUSTER-MGMT] Setting vCLS Retreat Mode to $Enabled for $ClusterName..." -ForegroundColor Cyan
                # $spec = New-Object VMware.Vim.ClusterConfigSpecEx
                # $spec.VclsConfig = New-Object VMware.Vim.ClusterVclsConfig
                # $spec.VclsConfig.RetreatMode = $Enabled
                # $clusterView.ReconfigureComputeResource_Task($spec, $true)
                
                Write-Host "[SUCCESS] vCLS Retreat Mode updated." -ForegroundColor Green
            }
            catch {
                Write-Error "Failed to update vCLS Retreat Mode: $($_.Exception.Message)"
            }
        }
    }
}