functions/backup-d365webconfig.ps1


<#
    .SYNOPSIS
        Backup the web.config file
         
    .DESCRIPTION
        Will backup the web.config file located in the AOS / IIS folder
         
    .PARAMETER OutputPath
        Path to the folder where you want the web.config file to be persisted
         
        Default is: "C:\Temp\d365fo.tools\WebConfigBackup"
         
    .PARAMETER Force
        Instructs the cmdlet to overwrite the destination file if it already exists
         
    .EXAMPLE
        PS C:\> Backup-D365WebConfig
         
        Will locate the web.config file, and back it up.
        It will look for the file in the AOS / IIS folder. E.g. K:\AosService\WebRoot\web.config.
        It will save the file to the default location: "C:\Temp\d365fo.tools\WebConfigBackup".
         
        A result set example:
         
        Filename LastModified File
        -------- ------------ ----
        web.config 6/29/2021 7:31:04 PM C:\temp\d365fo.tools\WebConfigBackup\web.config
         
    .EXAMPLE
        PS C:\> Backup-D365WebConfig -Force
         
        Will locate the web.config file, back it up, and overwrite if a previous backup file exists.
        It will look for the file in the AOS / IIS folder. E.g. K:\AosService\WebRoot\web.config.
        It will save the file to the default location: "C:\Temp\d365fo.tools\WebConfigBackup".
        It will overwrite any file named web.config in the destination folder.
         
        A result set example:
         
        Filename LastModified File
        -------- ------------ ----
        web.config 6/29/2021 7:31:04 PM C:\temp\d365fo.tools\WebConfigBackup\web.config
         
    .NOTES
        Tags: DEV, Tier2, DB, Database, Debug, JIT, LCS, Azure DB
         
        Author: Mötz Jensen (@Splaxi)
         
#>

function Backup-D365WebConfig {
    [CmdletBinding()]
    [OutputType()]
    param (
        [string] $OutputPath = $(Join-Path $Script:DefaultTempPath "WebConfigBackup"),

        [switch] $Force
    )

    begin {
        if (-not (Test-PathExists -Path $OutputPath -Type Container -Create)) { return }

        $File = $(Join-Path -Path $Script:AOSPath -ChildPath $Script:WebConfig)
    }
    
    process {

        if (-not (Test-PathExists -Path $File -Type Leaf)) { return }
        
        if (Test-PSFFunctionInterrupt) { return }
        
        Backup-File -File $File -DestinationPath $OutputPath -Force:$Force

    }
}