functions/backup-d365devconfig.ps1
<# .SYNOPSIS Backup the DynamicsDevConfig.xml file .DESCRIPTION Will backup the DynamicsDevConfig.xml file located in the PackagesLocalDirectory\Bin folder .PARAMETER OutputPath Path to the folder where you want the DynamicsDevConfig.xml file to be persisted Default is: "C:\Temp\d365fo.tools\DevConfigBackup" .PARAMETER Force Instructs the cmdlet to overwrite the destination file if it already exists .EXAMPLE PS C:\> Backup-D365DevConfig Will locate the DynamicsDevConfig.xml file, and back it up. It will look for the file in the PackagesLocalDirectory\Bin folder. E.g. K:\AosService\PackagesLocalDirectory\Bin\DynamicsDevConfig.xml. It will save the file to the default location: "C:\Temp\d365fo.tools\DevConfigBackup". A result set example: Filename LastModified File -------- ------------ ---- DynamicsDevConfig.xml 6/29/2021 7:31:04 PM C:\temp\d365fo.tools\DevConfigBackup\DynamicsDevConfig.xml .EXAMPLE PS C:\> Backup-D365DevConfig -Force Will locate the DynamicsDevConfig.xml file, back it up, and overwrite if a previous backup file exists. It will look for the file in the PackagesLocalDirectory\Bin folder. E.g. K:\AosService\PackagesLocalDirectory\Bin\DynamicsDevConfig.xml. It will save the file to the default location: "C:\Temp\d365fo.tools\DevConfigBackup". It will overwrite any file named DynamicsDevConfig.xml in the destination folder. A result set example: Filename LastModified File -------- ------------ ---- DynamicsDevConfig.xml 6/29/2021 7:31:04 PM C:\temp\d365fo.tools\DevConfigBackup\DynamicsDevConfig.xml .NOTES Tags: Web Server, IIS, IIS Express, Development Author: Sander Holvoet (@smholvoet) #> function Backup-D365DevConfig { [CmdletBinding()] [OutputType()] param ( [string] $OutputPath = $(Join-Path $Script:DefaultTempPath "DevConfigBackup"), [switch] $Force ) begin { if (-not (Test-PathExists -Path $OutputPath -Type Container -Create)) { return } $File = $(Join-Path -Path (Join-Path -Path $Script:PackageDirectory -ChildPath "bin") -ChildPath $Script:DevConfig) } process { if (-not (Test-PathExists -Path $File -Type Leaf)) { return } if (Test-PSFFunctionInterrupt) { return } $fileName = Split-Path -Path $File -Leaf $destinationFile = $(Join-Path -Path $OutputPath -ChildPath $fileName) if (-not $Force) { if ((-not (Test-PathExists -Path $destinationFile -Type Leaf -ShouldNotExist -ErrorAction SilentlyContinue -WarningAction SilentlyContinue))) { Write-PSFMessage -Level Host -Message "The <c='em'>$destinationFile</c> already exists. Consider changing the <c='em'>destination</c> path or set the <c='em'>Force</c> parameter to overwrite the file." return } } Write-PSFMessage -Level Verbose -Message "Copying from: $File" -Target $item Copy-Item -Path $File -Destination $destinationFile -Force:$Force -PassThru | Select-PSFObject "Name as Filename", "LastWriteTime as LastModified", "Fullname as File" } } |