Um dem abzuhelfen, hat Morten Jensen von MS in diesem Artikel Merging Application Objects using Windows PowerShell in Microsoft Dynamics NAV 2015 in den Kommentaren vorgestern eine Beispielfunktion zum Mergen von Versionslisten veröffentlicht.
Da die dort recht tief verbuddelt ist, hier noch mal in besser lesbarer Form:
- Code: Alles auswählen
<#
.SYNOPSIS
Creates version list string based on the three inputs of a merge operation (original, modified, target).
The returned version includes the "highest" version for each prefix and any other non-prefixed versions.
This script does a 3-way merge and then updates the version list in the resulting objects.
.EXAMPLE
$mergeInfo = Merge-NAVApplicationObject ...
$mergeInfo | Foreach-Object { Set-NAVApplicationObjectProperty $_.Result -VersionListProperty (New-NAVVersionList $_ ('MyTag', 'NAVDEU')) }
#>
function New-NAVVersionList($MergeInfo, [string[]]$VersionPrefix = 'NAVW1')
{
$allVersions = @()
if ( $mergeInfo.original.versionlist -ne $null )
{ $allVersions += $mergeInfo.original.versionlist.Split(',') }
if ( $mergeInfo.modified.versionlist -ne $null )
{ $allVersions += $mergeInfo.modified.versionlist.Split(',') }
if ( $mergeInfo.target.versionlist -ne $null )
{ $allVersions += $mergeInfo.target.versionlist.Split(',') }
$mergedVersions = @()
foreach ($prefix in $VersionPrefix)
{
# add the "highest" version that starts with the prefix
$mergedVersions += $allVersions | where { $_.StartsWith($prefix) } | sort | select -last 1
# remove all prefixed versions
$allVersions = $allVersions.Where({ !$_.StartsWith($prefix) })
}
# return a ,-delimited string consisting of the "highest" prefixed versions and any other non-prefixed versions
$mergedVersions += $allVersions
$mergedVersions -join ','
}
$result = Merge-NAVApplicationObject -OriginalPath .\ORIGINAL -ModifiedPath .\MODIFIED -TargetPath .\TARGET -ResultPath .\RESULT -Force
$result |
foreach { Set-NAVApplicationObjectProperty -Target $_.Result `
-VersionListProperty (New-NAVVersionList $_ ('NAVW1',’YOURTAG’)); `
Get-NAVApplicationObjectProperty -Source $_.Result `
}