Public/Switch-P1Tenant.ps1

function Switch-P1Tenant {
    <#
    .Synopsis
    Switch to another version an existing PlannerOne tenant (service + web app).
 
    .Description
    Switch an existing PlannerOne tenant to another version.
 
    .Parameter Tenant
    The tenant name.
 
    .Parameter Version
    The version to switch to.
 
    .Example
    # Switch a PlannerOne tenant named P1Prod to V6.0.1624.73941.
    Switch-P1Tenant -Tenant P1Prod -Version 6.0.1624.73941
    #>

    [cmdletbinding()]
    param( 
        [Parameter(Mandatory=$true)]
        [string] $Tenant,
        [string] $Version
    )
    Process
    {
        Write-Section "Switch tenant $Tenant to version $Version"
        Write-Warning "Migrate PlannerOne.Server to LAST version only for now"

        if (!(Test-Tenant $Tenant)) {
            Write-Warning "Tenant $Tenant does not exist."
            Write-Warning "Type Get-P1Tenant for a list of tenants."
            return
        }

        $package = Get-Package $P1SrvPackage
        if ($package -eq $null) {    
            Write-Warning "Package $P1SrvPackage does not exist."
            Write-Warning "Call Install-P1Package with missing packages."
            return
        }

        $package = Get-Package $P1WebPackage
        if ($package -eq $null) {    
            Write-Warning "Package $P1WebPackage does not exist."
            Write-Warning "Call Install-P1Package with missing packages."
            return
        }


        $serviceName = Get-ServiceNameFromTenant $Tenant
        $service = Get-Service -Name $serviceName
        if ($service -eq $null) {
                Write-Warning "Service $serviceName does not exist"
                Write-Warning "Switch operation canceled"
                return
        }
        
        $srvBinPath = Get-PackageFolder($P1SrvPackage)
        Write-Verbose "Server package folder is $srvBinPath"
        $srvBinFolder = "AppServer"

        #Test if service already exists
        # Link folder to repository
        $serverPath = Get-ServerPathFromTenant $Tenant
        if (!(Test-Path $serverPath)) {
            Write-Warning "$serverPath does not exist."
            Write-Warning "Switch operation canceled."
            return
        }
        
        Remove-Symlink $serverPath
        New-Symlink $serverPath "$srvBinPath\$srvBinFolder"

        Write-OK "Tenant '$Tenant' switched"
    }
}