tasks/Invoke-SetSitecoreConfigFileTask.ps1

#
# Invoke_SetSitecoreConfigFileTask.ps1
#
function Invoke-SetSitecoreConfigFileTask
{
    [CmdletBinding(SupportsShouldProcess=$true)]
    param(        
        [Parameter(Mandatory=$true)]
        [ValidateScript({ Test-Path $_ })]
        [string]$ConfigDir,
        
        [string[]]$ConfigFileListToEnable,
        
        [string[]]$ConfigFileListToDisable
    )    
   
    foreach ($configFileName in $ConfigFileListToEnable)
    {
        if($pscmdlet.ShouldProcess($configFileName, "Enable config file"))
        {
        
        Write-Information "Enabling config file: $configFileName"

        $configFilePath = Join-Path $ConfigDir -ChildPath $configFileName
        $disabledFilePath = "$configFilePath.disabled";
        $exampleFilePath = "$configFilePath.example";

        if (Test-Path $configFilePath) 
        {
            Write-Verbose " config file is already enabled...";
        } 
        elseif (Test-Path $disabledFilePath) 
        {
            Rename-Item -Path $disabledFilePath -NewName $configFileName;
            Write-Verbose " successfully enabled $disabledFilePath";
        }
        elseif (Test-Path $exampleFilePath) 
        {
            Rename-Item -Path $exampleFilePath -NewName $configFileName;
            Write-Verbose " successfully enabled $exampleFilePath";
        } 
        else
        {
            Write-Verbose " configuration file not found."
        }
        }
    }

    foreach ($configFileName in $ConfigFileListToDisable)
    {
        if($pscmdlet.ShouldProcess($configFileName, "Disable config file"))
        {
        
        Write-Information "Disabling config file: $configFileName"

        $configFilePath = Join-Path $ConfigDir -ChildPath $configFileName
        $disabledFilePath = "$configFilePath.disabled";
       

        if (Test-Path $disabledFilePath) 
        {
            Write-Verbose " config file is already disabled...";
        } 
        elseif (Test-Path $configFilePath) 
        {
            Rename-Item -Path $configFilePath  -NewName $disabledFilePath;
            Write-Verbose " successfully disabled $disabledFilePath";
        }
        else
        {
            Write-Verbose " configuration file not found."
        }
        }
    }

}

Export-ModuleMember Invoke-SetSitecoreConfigFileTask
Register-SitecoreInstallExtension -Command Invoke-SetSitecoreConfigFileTask -As SetSitecoreConfigFile -Type Task