Skip to content
Permalink
Branch: master
Find file Copy path
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
128 lines (116 sloc) 6.07 KB
function Backup-NAVApplicationObjects
{
<#
.Synopsis
Creates Delta's, fob, txt files by providing Original and Modified databases, and path
.DESCRIPTION
To create every single possible export of your developments
.NOTES
It creates:
- Deltas
- Reversed Deltas
- joined txt-file
- split txt-files
- fob-file
.EXAMPLE
$CreatedITems = Backup-NAVApplicationObjects `
-BackupOption OnlyModified `
-ServerInstance $DEVInstance `
-BackupPath $BackupPath `
-Name $Name `
-NavAppOriginalServerInstance $ORIGInstance `
-NavAppWorkingFolder $WorkingFolder
#>
[CmdletBinding()]
param
(
[Parameter(ValueFromPipelineByPropertyName=$true,Mandatory=$true)]
[Object] $ServerInstance,
[Parameter(Mandatory=$False)]
[ValidateSet('AllObjects','OnlyModified','CustomFilter')]
[String] $BackupOption,
[Parameter(Mandatory=$False)]
[String] $CustomFilter,
[Parameter(Mandatory=$true)]
[String] $BackupPath,
[Parameter(Mandatory=$false)]
[Object] $NavAppOriginalServerInstance,
[Parameter(Mandatory=$false)]
[String] $NavAppWorkingFolder,
[Parameter(Mandatory=$false)]
[Object] $ExportPermissionSetId,
[Parameter(Mandatory=$False)]
[String] $Name,
[parameter(Mandatory=$false)]
[Switch] $CompleteReset,
[parameter(Mandatory=$False)]
[switch] $IncludeFilesInNewSyntax
)
Process{
$ServerInstanceObject = (Get-NAVServerInstanceDetails -ServerInstance $ServerInstance)
switch($BackupOption){
'AllObjects' {
$ObjectFilter = ''
}
'OnlyModified' {
$ObjectFilter = 'Modified=1'
}
'CustomFilter'{
$ObjectFilter = $CustomFilter
}
}
if ([String]::IsNullOrEmpty($Name)){$Name = $ServerInstance}
$Backupfiletxt = join-path $BackupPath "$($Name)_$($BackupOption).txt"
$Backupfilefob = join-path $BackupPath "$($Name)_$($BackupOption).fob"
$BackupFiletxtNewSyntax = join-path $BackupPath "$($Name)_$($BackupOption)_NewSyntax.txt"
if ([String]::IsNullOrEmpty($ObjectFilter)){
Write-host -ForegroundColor Green "Creating $Backupfiletxt"
Export-NAVApplicationObject -DatabaseServer "$($ServerInstanceObject.DatabaseServer)\$($ServerInstanceObject.DatabaseInstance)" -DatabaseName $ServerInstanceObject.DatabaseName -Path $Backupfiletxt -Force
Write-host -ForegroundColor Green "Creating $Backupfilefob"
Export-NAVApplicationObject -DatabaseServer "$($ServerInstanceObject.DatabaseServer)\$($ServerInstanceObject.DatabaseInstance)" -DatabaseName $ServerInstanceObject.DatabaseName -Path $Backupfilefob -Force
if ($IncludeFilesInNewSyntax){
Write-host -ForegroundColor Green "Creating $Backupfiletxt in New Syntax"
Export-NAVApplicationObject -DatabaseServer "$($ServerInstanceObject.DatabaseServer)\$($ServerInstanceObject.DatabaseInstance)" -DatabaseName $ServerInstanceObject.DatabaseName -Path $BackupFiletxtNewSyntax -Force -ExportToNewSyntax
}
}
Else {
Write-host -ForegroundColor Green "Creating $Backupfiletxt"
Export-NAVApplicationObject -Filter $ObjectFilter -DatabaseServer "$($ServerInstanceObject.DatabaseServer)\$($ServerInstanceObject.DatabaseInstance)" -DatabaseName $ServerInstanceObject.DatabaseName -Path $Backupfiletxt -Force
Write-host -ForegroundColor Green "Creating $Backupfilefob"
Export-NAVApplicationObject -Filter $ObjectFilter -DatabaseServer "$($ServerInstanceObject.DatabaseServer)\$($ServerInstanceObject.DatabaseInstance)" -DatabaseName $ServerInstanceObject.DatabaseName -Path $Backupfilefob -Force
if ($IncludeFilesInNewSyntax){
Write-host -ForegroundColor Green "Creating $Backupfiletxt in New Syntax"
Export-NAVApplicationObject -Filter $ObjectFilter -DatabaseServer "$($ServerInstanceObject.DatabaseServer)\$($ServerInstanceObject.DatabaseInstance)" -DatabaseName $ServerInstanceObject.DatabaseName -Path $BackupFiletxtNewSyntax -Force -ExportToNewSyntax
}
}
if($CompleteReset) {
$RemoveDestinationPath = "$BackupPath\Split\"
if (Test-Path $RemoveDestinationPath) {Remove-Item $RemoveDestinationPath -Force -Recurse}
}
Get-Item $Backupfiletxt | Split-NAVApplicationObjectFile -Destination "$BackupPath\Split\" -Force
if(!([String]::IsNullOrEmpty($NavAppOriginalServerInstance))) {
if ([string]::IsNullOrEmpty(($NavAppWorkingFolder))){
Write-Error 'Please provide a workingfolder if you want to create delta''s'
break
}
$Folders =
Create-NAVDelta `
-OriginalServerInstance $NavAppOriginalServerInstance `
-ModifiedServerInstance $ServerInstance `
-WorkingFolder $NavAppWorkingFolder `
-CreateReverseDeltas `
-CompleteReset:$CompleteReset `
-IncludeFilesInNewSyntax:$IncludeFilesInNewSyntax
foreach($Folder in $Folders){
if($CompleteReset) {
$RemoveDestinationPath = Join-Path $BackupPath $folder.Basename
if (Test-Path $RemoveDestinationPath) {Remove-Item $RemoveDestinationPath -Force -Recurse}
}
$null = Copy-Item -Path $Folder -Destination $BackupPath -Recurse -Force
}
Get-childitem $BackupPath
} else {
write-warning 'No delta''s were created!'
}
}
}
You can’t perform that action at this time.