Public/Export-P1LegacyEnvironment.ps1

function Export-P1LegacyEnvironment {
    <#
    .Synopsis
    Export legacy PlannerOne environment to file.

    .Description
    Export an existing and initialized legacy environment stored in a database and save it to file system.
    Each environments found for Production Scheduler and ResourcePlanner will be exported in its own file in -OutDir directory.

    .Parameter SQLServer
    The SQL Server host name and instance.

    .Parameter Database
    The SQL Server database name.

    .Parameter OutDir
    The root directory path to use for export. .\p1EnvExport by default.

    .Parameter ForceDatatableName
    Force datatable name to export. By default script will export sequentially dbo.EnvironmentProductionDao and dbo.EnvironmentProjectDao.

    .Parameter Product
    Select product to export environment from.
    Valid values are: Production, Projects, All.
    Default value is All.
    All option cannot be used with ForceDatatableName.

    .Parameter UseUIdAsName
    Do not try to retrieve Planning name and Planning Group Container to create directories.
    Use environment UId.
    Use this option if environments names are not valid for directory names.
    
    #>

    [cmdletbinding()]
    param(
        [Parameter(Mandatory=$true)]
        [string] $SQLServer,
        [Parameter(Mandatory=$true)]
        [string] $Database,
        [string] $OutDir,
        [string] $ForceDatatableName,
        [string] $Product,
        [switch] $UseUIdAsName
    )    
    Process {
        if ($Product -eq "") {
                $Product = "All"
        }

        if ($Product -ne "Production" -and $Product -ne "Project" -and $Product -ne "All") {
                Write-Warning "Valid values for -Product are: Production, Project, All"
                Write-Warning "Operation canceled."
                return
        }

        $currentDir = (Get-Item -Path ".\").FullName
        if ($OutDir -eq "") {            
            $OutDir = $currentDir + "\p1EnvExport"
        } else {
            $rooted = [System.IO.Path]::IsPathRooted($OutDir)
            if ($rooted -eq $false) {
                $OutDir = $currentDir + "\" + $OutDir
            }
        }

        Write-Verbose "OutDir is $OutDir"

        $connectionString = Get-ConnectionString -Server $SQLServer -Database $Database -IntegratedSecurity "true"

        if ($ForceDatatableName -eq "") {
            if ($Product -eq "Production" -or $Product -eq "All") {
                $PSDir = $OutDir + "\Production"             
                Write-Section "Production Scheduler environments"
                Export-DBEnvironments -connectionString $connectionString -dataTable "dbo.EnvironmentProductionDao" -OutDir $PSDir -useUId:$UseUIdAsName
            }

            if ($Product -eq "Project" -or $Product -eq "All") {                    
                $RPDir = $OutDir + "\Project"
                Write-Section "Resource Planner environments"
                Export-DBEnvironments -connectionString $connectionString -dataTable "dbo.EnvironmentProjectDao" -OutDir $RPDir -useUId:$UseUIdAsName
            }
        } else {
            if ($Product -eq "All") {
                    Write-Warning "Product cannot be All with ForceDatatableName option"
                    Write-Warning "Operation canceled."
                    return;
            }

            Write-Verbose "Reading $ForceDatatableName environments..."
            Export-DBEnvironments -connectionString $connectionString -dataTable $ForceDatatableName -OutDir $OutDir -useUId:$UseUIdAsName
        }
    }
}