-
Notifications
You must be signed in to change notification settings - Fork 90
/
Backup-NAVApplicationObjects.ps1
127 lines (116 loc) · 6.07 KB
/
Backup-NAVApplicationObjects.ps1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
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!'
}
}
}