diff --git a/scripts/Update-OvfConfiguration.ps1 b/scripts/Update-OvfConfiguration.ps1 index f6ce773..d080c68 100644 --- a/scripts/Update-OvfConfiguration.ps1 +++ b/scripts/Update-OvfConfiguration.ps1 @@ -89,14 +89,18 @@ ForEach ($Disk in $OVFConfig.DynamicDisks) { $XMLDiskItem.SelectSingleNode('rasd:AddressOnParent', $NS).InnerText = ($DiskId - 1) $XMLDiskItem.SelectSingleNode('rasd:ElementName', $NS).InnerText = "Hard Disk $($DiskId)" $XMLDiskItem.SelectSingleNode('rasd:HostResource', $NS).InnerText = "ovf:/disk/vmdisk$($DiskId)" - # Determine next free available 'InstanceID' - $InstanceIDs = $XML.SelectNodes('//ns:VirtualHardwareSection/ns:Item/rasd:InstanceID', $NS) + # Determine next free available and highest 'InstanceID' + $InstanceIDs = $XML.SelectNodes('//ns:VirtualHardwareSection/ns:Item/rasd:InstanceID', $NS).InnerText $InstanceID = 1 - While ($InstanceIDs.InnerText -contains $InstanceID) { + While ($InstanceIDs -contains $InstanceID) { $InstanceID++ } + $HighestInstanceID = ($InstanceIDs | Measure-Object -Maximum).Maximum $XMLDiskItem.SelectSingleNode('rasd:InstanceID', $NS).InnerText = $InstanceID - [void]$XML.SelectSingleNode('//ns:VirtualHardwareSection', $NS).AppendChild($XMLDiskItem) + [void]$XML.SelectSingleNode('//ns:VirtualHardwareSection', $NS).InsertAfter( + $XMLDiskItem, + $XML.SelectSingleNode("//ns:VirtualHardwareSection/ns:Item/rasd:InstanceID[.='$($HighestInstanceID)'", $NS).ParentNode + ) $OVFConfig.PropertyCategories[0].ProductProperties += @{ Key = "vmconfig.disksize.$($DiskId)" @@ -159,8 +163,14 @@ If ($OVFConfig.DeploymentConfigurations.Count -gt 0) { $XMLMemory.SelectSingleNode('rasd:ElementName', $NS).InnerText = '{0}MB of memory' -f $Configuration.Size.Memory $XMLMemory.SelectSingleNode('rasd:VirtualQuantity', $NS).InnerText = $Configuration.Size.Memory - [void]$XML.SelectSingleNode('//ns:VirtualHardwareSection', $NS).AppendChild($XMLCPU) - [void]$XML.SelectSingleNode('//ns:VirtualHardwareSection', $NS).AppendChild($XMLMemory) + [void]$XML.SelectSingleNode('//ns:VirtualHardwareSection', $NS).InsertAfter( + $XMLCPU, + $XML.SelectSingleNode('//ns:VirtualHardwareSection/ns:System', $NS) + ) + [void]$XML.SelectSingleNode('//ns:VirtualHardwareSection', $NS).InsertAfter( + $XMLMemory, + $XML.SelectSingleNode('//ns:VirtualHardwareSection/ns:System', $NS) + ) } } }