So now we have got all the back story out of the way with Part 1, we can get into the meat of it all.
The Middle
I used various scripts, from various places and used the web client to get everything how I needed it to be.
These scripts are provided AS IS, use them at your own risk, they worked for me. I have credited everyone I borrowed the source scripts from, and even provided the location of the source scripts too. A lot of people put effort into making the scripts, so I thought it would only be fair people knew where they came from. I made edits and adjusted as I needed to get the job done.
Creating new VSS vSwitch1 on every host – script
Connect-VIServer <InsertvCenterHere> Get-Cluster -Name "Production Cluster" | Get-VMHost | New-VirtualSwitch -Name vSwitch1 Disconnect-VIServer <InsertvCenterHere> -confirm:$false
Creating new VSS PGs on every host – script
#This assumes you have already created a vSwitch1 on every host, and then it creates the port groups as listed and gives them the required VLAN ID too. Feel free to rename and add more as needed Connect-VIServer <InsertvCenterHere> $switches = @{ 'DMZ' = 2 'Private' = 3 'Secure' = 4 'Prod_Cluster' = 5 'Test_Cluster' = 6 'Nodes' = 7 'Application' = 8 'Backup' = 9 'Database' = 10 'DMZ1' = 11 'AppDB' = 12 'Dev AppDB' = 81 'Dev DMZ' = 82 'FleetDMZ' = 84 'Virtual Application' = 632 'Virtual Application 2' = 785 'Virtual Database' = 852 'Web Servers' = 65 'X-Hosting' = 512 } foreach($vlan_name in $switches.keys) { write-host ("Adding VLAN ID " + $switches.$vlan_name + " (" + $vlan_name + ")") get-cluster "InsterCLusterhere"|get-vmhost|get-virtualswitch -name "vSwitch1"|new-virtualportgroup -name $vlan_name -vlanid $switches.$vlan_name } Disconnect-VIServer <InsertvCenterHere> -confirm:$false
Migrating 2 vmnics over to vSwitch1 – script
#Taken from https://blog.linoproject.net/vmware-vsphere-vswitch-migration/ #Uncomment the vCenter/$pnics you want it to work on Set-PowerCLIConfiguration -DefaultVIServerMode single -Scope Session -confirm:$false Connect-VIServer <InsertvCenterHere> #Adjust cluster name of the cluster you want to work on, OPTIONAL - add hostname if you want to work on a per-host basis to be a bit safer and controlled #You vmnics will be different, so adjust as needed $hosts = Get-Cluster -Name "Production Cluster" #| Get-VMHost -Name host1 foreach ($singlehost in $hosts){ $vss = Get-VirtualSwitch -VMHost $singlehost -Name "vSwitch1" #vmnics to migrate FIRST $pnics = $singlehost | Get-VMHostNetworkAdapter -Physical -Name "vmnic1", "vmnic3" #vmnics to migrate LAST after you have moved all the VMs across, come back to this later on #$pnics = $singlehost | Get-VMHostNetworkAdapter -Physical -Name "vmnic2", "vmnic5" Add-VirtualSwitchPhysicalNetworkAdapter -VirtualSwitch $vss -VMHostPhysicalNic $pnics -confirm:$false #-WhatIf } Disconnect-VIServer <InsertvCenterHere> -confirm:$false #Make sure you are only connected to one vcenter!
Moving the VMs to the VSS -script
#http://www.virtu-al.net/2009/10/19/powercli-mass-vm-portgroup-change/ Set-PowerCLIConfiguration -DefaultVIServerMode single -Scope Session -confirm:$false #Since the VDS and VSS PG have exactly the same name, we realised we needed to rename the VDS PG slightly otherwise the script would fail. Renaming a VDS PG doesnt disconnect the VMs on it, this does happen when you do it with a VSS PG. #-WhatIf was used for testing #It gets the PG name you provide, on the VDS it adds -Temp to the name, and then goes through the whole cluster, finding VMs on the VDS PG and moving them to the VSS PG with the same name on the host, please adjust as needed Connect-VIServer <InsertvCenterHere> $NetworkName = "Whatever your PG network name is" $TempNetworkName = $NetworkName + "-Temp" Get-VDPortgroup -Name $NetworkName | Set-VDPortgroup -Name $TempNetworkName -Confirm:$False #-WhatIf Get-Cluster -Name "Production Cluster " | Get-VMHost|Get-VM |Get-NetworkAdapter |Where {$_.NetworkName -eq $TempNetworkName } |Set-NetworkAdapter -NetworkName $NetworkName -Confirm:$false #-WhatIf Get-VDPortgroup -Name $TempNetworkName | Set-VDPortgroup -Name $NetworkName -Confirm:$False Disconnect-VIServer <InsertvCenterHere> -confirm:$false
Migrate over the final vmnics -script
#Taken from https://blog.linoproject.net/vmware-vsphere-vswitch-migration/ #Uncomment the vCenter/$pnics you want it to work on, this is the same script as the one used earlier but now the second half as been uncommented and the first half commented out #You vmnics will be different, so adjust as needed Set-PowerCLIConfiguration -DefaultVIServerMode single -Scope Session -confirm:$false Connect-VIServer <InsertvCenterHere> #Adjust cluster name of the cluster you want to work on, OPTIONAL - add hostname if you want to work on a per-host basis to be a bit safer and controlled $hosts = Get-Cluster -Name "Production Cluster" #| Get-VMHost -Name host1 foreach ($singlehost in $hosts){ $vss = Get-VirtualSwitch -VMHost $singlehost -Name "vSwitch1" #vmnics to migrate FIRST #$pnics = $singlehost | Get-VMHostNetworkAdapter -Physical -Name "vmnic1", "vmnic3" #vmnics to migrate LAST after you have moved all the VMs across, come back to this later on $pnics = $singlehost | Get-VMHostNetworkAdapter -Physical -Name "vmnic2", "vmnic5" Add-VirtualSwitchPhysicalNetworkAdapter -VirtualSwitch $vss -VMHostPhysicalNic $pnics -confirm:$false #-WhatIf } Disconnect-VIServer <InsertvCenterHere> -confirm:$false #Make sure you are only connected to one vcenter!
Remove hosts from VDS – GUI
Backup and import the VDS into the new VCSA – GUI
https://kb.vmware.com/s/article/2149769 this caught me off guard!
Copy Tags to new VCSA – script
#This script was created by our scripting guru at work, it transfers all the tags that are in the old vCenter to the new vCenter, just the tags NOT what they are assigned to, that comes later Set-PowerCLIConfiguration -DefaultVIServerMode single -Scope Session -confirm:$false|out-null $src_server = "Source Old vCenter" $dst_server = "Destination New vCenter" Connect-VIServer -server $src_server|out-null $src_tag_cats = get-tagcategory write-output "-- SRC Tag Categores:" $src_tag_cats.name $src_tags = get-tag write-output "-- SRC Tags:" $src_tags.name write-output "-- SRC Attributes:" $src_attr = get-customattribute #-name "CI *" $src_attr.name write-output "-- SRC Template Tags:" $src_template_tags = get-template|get-tagassignment $src_template_tags disconnect-viserver -server * -confirm:$false Connect-VIServer -server $dst_server|out-null $dst_tag_cats = get-tagcategory write-output "-- DST Tag Categores:" $dst_tag_cats.name $dst_tags = get-tag write-output "-- DST Tags:" $dst_tags.name write-output "-- DST Attributes:" $dst_attr = get-customattribute #-name "CI *" $dst_attr.name $src_tag_cats|%{ if($dst_tag_cats.name -notcontains $_.name) { write-output ($dst_server + " is missing tag category '" + $_.Name + "'") New-TagCategory -Name $_.name -Cardinality $_.Cardinality -Description $_.Description } } $src_tags|%{ if($dst_tags.name -notcontains $_.name) { write-output ($dst_server + " is missing tag '" + $_.Name + "'") New-Tag -Name $_.name -category ([string]($_.category)) -Description $_.Description } } $src_attr|%{ if($dst_attr.name -notcontains $_.name) { write-output ($dst_server + " is missing attribute '" + $_.Name + "'") New-CustomAttribute -name $_.name } } disconnect-viserver -server * -confirm:$false
Export and Import VM Folder Structure – script
https://github.com/kmruddy/vcenter_migration Credit to Kyle Ruddy for this bad boy, it pulls the folder structure from the old vCenter and copies it exactly into the new vCenter, all the other bits were never finished but the folder migration works flawlessly!
Export to csv and import from csv which VMs have Tags assigned – script
So this will export all VM tags to csv before, and when the VMs are all in the new vCenter you can use the next script to apply the tags again to the VMs
#So Export all VM tags to csv before, and when the VMs are all in the new vCenter you can use the next script to apply the tags again to the VMs Set-PowerCLIConfiguration -DefaultVIServerMode single -Scope Session -confirm:$false Connect-VIServer <OldvCenterServer> $vm_csv = 'C:\temp\OldVC-vm-tags.csv' "vm,tag"|out-file -filepath $vm_csv -Encoding ascii $vms = Get-VM foreach($vm in $vms) { $tags = Get-TagAssignment -Entity $vm foreach($tag in $tags) { ($vm.name + "," + $tag.tag.name) |out-file -filepath $vm_csv -append -Encoding ascii } } Disconnect-VIServer <OldvCenterServer> -confirm:$false #Make sure you are only connected to one vCenter!
Once the VMs are all in the new vCenter, use this script to apply the VM tags from the csv exported earlier
#Once the VMs are all in the new vCenter, use this script to apply the VM tags from the csv exported earlier Set-PowerCLIConfiguration -DefaultVIServerMode single -Scope Session -confirm:$false Connect-VIServer <NewvCenterServer> import-csv -path C:\temp\OldVC-vm-tags.csv|%{get-vm -name $_.vm|New-TagAssignment -tag $_.tag -WhatIf} Disconnect-VIServer <NewvCenterServer> -confirm:$false
Export to csv and import from csv which Datastores have Tags assigned – script
So this will export all Datastore tags to csv, and when everything has been moved over into the new vCenter you can use the next script to apply the tags again to the VMs
#So this will export all Datastore tags to csv, and when everything has been moved over into the new vCenter you can use the next script to apply the tags again to the VMs Set-PowerCLIConfiguration -DefaultVIServerMode single -Scope Session -confirm:$false Connect-VIServer <OldvCenterServer> $ds_csv = 'C:\temp\OldVC-ds-tags.csv' "ds,tag"|out-file -filepath $ds_csv -Encoding ascii get-datastore|get-tagassignment|%{ ($_.entity.name + "," + $_.tag.name)|out-file -filepath $ds_csv -append -Encoding ascii } Disconnect-VIServer <OldvCenterServer> -confirm:$false
Once everything has been moved over to the new vCenter, use this script to apply the VM tags from the csv exported earlier
#Once everything has been moved over to the new vCenter, use this script to apply the VM tags from the csv exported earlier Set-PowerCLIConfiguration -DefaultVIServerMode single -Scope Session -confirm:$false Connect-VIServer <NewvCenterServer> import-csv -path C:\temp\OldVC-ds-tags.csv|%{get-datastore -name $_.ds|New-TagAssignment -tag $_.tag -WhatIf} Disconnect-VIServer <NewvCenterServer> -confirm:$false #Make sure you are only connected to one vcenter!
Export to csv and import from csv the VDS Port Groups that have Tags assigned – script
This Exports all the VDS Port Group Tags to csv, so you can import them into the new vCenter when you have everything where you want it
#This Exports all the VDS Port Group Tags to csv, so you can import them into the new vCenter when you have everything where you want it Set-PowerCLIConfiguration -DefaultVIServerMode single -Scope Session -confirm:$false #Connect-VIServer <OldvCenterServer> $ds_csv = 'C:\temp\OldVC-vds-tags.csv' "pg,tag"|out-file -filepath $ds_csv -Encoding ascii Get-VDPortgroup |get-tagassignment|%{ ($_.entity.name + "," + $_.tag.name)|out-file -filepath $ds_csv -append -Encoding ascii } Disconnect-VIServer <OldvCenterServer> -confirm:$false #Make sure you are only connected to one vcenter!
This script imports all the VDS Port Group Tags from the CSV into the new vCenter when you are ready
#This script imports all the VDS Port Group Tags from the CSV into the new vCenter when you are ready Set-PowerCLIConfiguration -DefaultVIServerMode single -Scope Session -confirm:$false Connect-VIServer <NewvCenterServer> import-csv -path C:\temp\OldVC-vds-tags.csv|%{Get-VDPortgroup -name $_.pg|New-TagAssignment -tag $_.tag } #-whatif} Disconnect-VIServer <NewvCenterServer> -confirm:$false
Export to csv and import from csv the DRS cluster rules – script
This exports the DRS Rules of a cluster to a file, so you can import them into the new Cluster in the new vCenter when you are ready
#This exports the DRS Rules of a cluster to a file, so you can import them into the new Cluster in the new vCenter when you are ready #https://communities.vmware.com/message/1200272 Connect-VIServer <OldvCenterServer> $outfile = "C:\temp\DRSrules.txt" Remove-Item $outfile $clusterName = "Production Cluster" $rules = get-cluster -Name $clusterName | Get-DrsRule foreach($rule in $rules){ $line = (Get-View -Id $rule.ClusterId).Name $line += ("," + $rule.Name + "," + $rule.Enabled + "," + $rule.KeepTogether) foreach($vmId in $rule.VMIds){ $line += ("," + (Get-View -Id $vmId).Name) } $line | Out-File -Append $outfile } Disconnect-VIServer <OldvCenterServer> -Confirm:$false
This imports the DRS Rules of a cluster from the file when you are ready for that step
#https://communities.vmware.com/message/1200272 #This imports the DRS Rules of a cluster from the file when you are ready for that step Connect-VIServer <NewvCenterServer> $file = "C:\temp\DRSrules.txt" $rules = Get-Content $file foreach($rule in $rules){ $ruleArr = $rule.Split(",") if($ruleArr[2] -eq "True"){$rEnabled = $true} else {$rEnabled = $false} if($ruleArr[3] -eq "True"){$rTogether = $true} else {$rTogether = $false} get-cluster $ruleArr[0] | ` New-DrsRule -Name $ruleArr[1] -Enabled $rEnabled -KeepTogether $rTogether -VM (Get-VM -Name ($ruleArr[4..($ruleArr.Count - 1)])) } Disconnect-VIServer <NewvCenterServer> -Confirm:$false
Export to csv the VMs Folder location – script
This script works on a per-host basis, so you change the hostname after every run, this works well for me because it gave me a separate csv for every host. This made dealing with any importing issues very easy as I was importing hosts into the new vCenter on a per-host basis.
#I have taken this script from below discussion # By https://communities.vmware.com/message/1828708#1828708 # By https://vprhlabs.blogspot.co.uk/p/vcenter-migration_93.html #This script works on a per-host basis, so you change the hostname after every run, this works well for me because it gave me a separate csv for every host. This made dealing with any importing issues very easy as I was importing hosts into the new vCenter on a per-host basis. Set-PowerCLIConfiguration -DefaultVIServerMode single -Scope Session -confirm:$false #Connect-VIServer <OldvCenterServer> New-VIProperty -Name 'BlueFolderPath' -ObjectType 'VirtualMachine' -Value { param($vm) function Get-ParentName{ param($object) if($object.Folder){ $blue = Get-ParentName $object.Folder $name = $object.Folder.Name } elseif($object.Parent -and $object.Parent.GetType().Name -like "Folder*"){ $blue = Get-ParentName $object.Parent $name = $object.Parent.Name } elseif($object.ParentFolder){ $blue = Get-ParentName $object.ParentFolder $name = $object.ParentFolder.Name } if("vm","Datacenters" -notcontains $name){ $blue + "/" + $name } else{ $blue } } (Get-ParentName $vm).Remove(0,1) } -Force | Out-Null $dcName = "Production DC" $hostname = "host1" Get-VM -Location (Get-Datacenter -Name $dcName | Get-VMHost -Name $hostname ) | Select Name, VMHost, BlueFolderPath | Export-Csv "C:\temp\$hostname.csv" -NoTypeInformation -UseCulture Disconnect-VIServer <OldvCenterServer>-confirm:$false
Move VMs into their correct folder structure in new VCSA – script
Worked 80% of the time, the times it didn’t, you just had to find the VM name in the csv and move the VMs yourself
Now the reason I exported the folder location of the VMs on a per-host basis in the previous script, was because when you moved the host over into the new vCenter, this script would move the VMs into the correct folders. the issue was it worked about 80% of the time, and I couldn’t quite figure out why. So I accepted that I would have to manually move some VMs, into the correct location. This was simple enough as I could open the exported CSV, and then cross reference which VMs did not move into their require folder and just move them myself.
# By https://communities.vmware.com/message/1828708#1828708 # By https://vprhlabs.blogspot.co.uk/p/vcenter-migration_93.html #Import Folders and Move VMs to its folder #Now the reason I exported the folder location of the VMs on a per-host basis in the previous script, was because when you had moved the host over into the new vCenter, this script would move the VMs into the correct folders. the issue was it worked about 80% of the time, and I couldn't quite figure out why. So I accepted that I would have to manually move some VMs, into the correct location. This was simple enough as I could open the exported CSV, and then cross reference which VMs did not move into their require folder and just move them myself. #you update the $csv3 variable with the csv file for the host you have imported in, the script then uses the csv and tries to move the VMs into the correct folder. When it's done, you will probably have a few VMs that it did not move, and you will have to cross reference the csv file yourself and move the VMs yourself. Set-PowerCLIConfiguration -DefaultVIServerMode single -Scope Session -confirm:$false Connect-VIServer <NewvCenterServer> $vmsonha5 = Get-Cluster -Name "Production Cluster" | Get-VM |sort name $csv3 = "C:\temp\vmostfolder.csv" $newDatacenter = "Production DC" #$newFolder = "vCenter-Folders" #$startFolder = New-Folder -Name $newFolder -Location (Get-Folder -Name vm -Location (Get-Datacenter -Name $newDatacenter)) $startfolder = Get-Folder #"vCenter-Folders" $testing2 = Import-Csv $csv3 -UseCulture $testing2 | %{ $location = $startFolder $_.BlueFolderPath.TrimStart('/').Split('/') | %{ $tgtFolder = Get-Folder -Name $_ -Location $location -ErrorAction SilentlyContinue if(!$tgtFolder){ $location = New-Folder -Name $_ -Location $location } else{ $location = $tgtFolder } } # Write-Host $location $hm = $_.Name $wups = $vmsonha5 | where {$_.name -eq $hm} #Write-Host $hm Move-VM -VM $wups -Destination $location -Confirm:$false -RunAsync } Disconnect-VIServer <NewvCenterServer> -confirm:$false
Add hosts to VDS – GUI
Migrate 2x vmnics from VSS to VDS – GUI
Migrate VMs from VSS to VDS – script
This does the opposite of the script we used earlier, it moves VMs from the VSS PGs to the VDS PGs, adjust $NetworkName accordingly
#This does the opposite of the script we used earlier, it moves Vms from the VSS PGs to the VDS PGs, adjust $NetworkName accordingly #http://www.virtu-al.net/2009/10/19/powercli-mass-vm-portgroup-change/ #Set-PowerCLIConfiguration -DefaultVIServerMode single -Scope Session -confirm:$false Connect-VIServer <NewvCenterServer> $NetworkName = "DMZ" $TempNetworkName = $NetworkName + "-Temp" Get-VDPortgroup -Name $NetworkName | Set-VDPortgroup -Name $TempNetworkName -Confirm:$False #-WhatIf Get-Cluster -Name "Production Cluster" | Get-VMHost|Get-VM |Get-NetworkAdapter |Where {$_.NetworkName -eq $NetworkName } |Set-NetworkAdapter -NetworkName $TempNetworkName -Confirm:$false #-WhatIf Get-VDPortgroup -Name $TempNetworkName | Set-VDPortgroup -Name $NetworkName -Confirm:$False Disconnect-VIServer <NewvCenterServer> -confirm:$false
Migrate over the remaining vmnics to the VDS – GUI
Export and import Custimziation Specs – script
This script exports the customization specs, so you can import them to the new vCenter when you are ready
#This script exports the customization specs, so you can import them to the new vCenter when you are ready #http://www.van-lieshout.com/2009/07/export-and-import-customization-profiles-using-powershell/ #With some modifications #Variables $VCServer = "<OldvCenterServer>" $path = "C:\temp\Custimization_Specs" #Connect to vCenter Server $VC = Connect-VIServer $VCServer #Export Customization Profiles $view = get-view CustomizationSpecManager ForEach ($CustomizationProfile in $view.info) { $xml = $view.CustomizationSpecItemToXml($view.GetCustomizationSpec($CustomizationProfile.name)) $xml | Out-File ($path + "\" + ($CustomizationProfile.name) + ".xml") } Disconnect-VIServer "<OldvCenterServer>" -Confirm:$false
This script now imports the customization specs into the new vCenter Server
#This script now imports the customization specs into the new vCenter Server #http://www.van-lieshout.com/2009/07/export-and-import-customization-profiles-using-powershell/ #With some modifications #Variables $VCServer = "<NewvCenterServer>" $path = "C:\temp\Custimization_Specs" #Connect to vCenter Server $VC = Connect-VIServer $VCServer #Import Customization Profiles $view = Get-View CustomizationSpecManager ForEach ($xmlfile in (Get-ChildItem -Path $path | where {$_.extension -eq ".xml"})) { $xml = Get-Content -path $xmlfile.FullName $view.CreateCustomizationSpec($view.XmlToCustomizationSpecItem($xml)) } Disconnect-VIServer "<OldvCenterServer>" -Confirm:$false
Adjust Core Dumps to point to new VCSA – script
#http://www.cloudyfuture.net/2016/02/23/configure-dump-collector-with-powercli-in-vsphere-6/ #https://notesfrommwhite.net/2016/01/20/configure-and-test-of-esxi-dump-collector/ Set-PowerCLIConfiguration -DefaultVIServerMode single -Scope Session -confirm:$false Connect-VIServer <NewvCenterServer> $vcenterip = '<NewvCenterServerIP>' foreach($vmhost in Get-Cluster -Name "Production Cluster"|Get-VMHost){ $esxcli = Get-EsxCli -VMHost $vmhost.Name $esxcli.system.coredump.network.set($null,"vmk0",$vcenterip,6500) $esxcli.system.coredump.network.set($true) $esxcli.system.coredump.network.get() } foreach($vmhost in Get-Cluster -Name "Production Cluster"|Get-VMHost){ $esxcli = Get-EsxCli -VMHost $vmhost.Name Write-Host "Checking dump collector on host $vmhost.name" $esxcli.system.coredump.network.check() } Disconnect-VIServer <NewvCenterServer> -Confirm:$false
I disconnected each host from the 5.5 vCenter and added them to the new VCSA in doing so all the info in the old vCenter was still there if I needed it at any point. I did this step manually as much as I like automation for a lot of things, there are certain steps that I just like to do myself, it makes me feel better and it makes the business feel better.
Once all the hosts and VMs were in their folders, I then used the scripts to apply the correct tags to the various VMs/datastores/VDS port groups.
The new VCSAs I manually created all the clusters etc to mirror what the original 5.5 vCenter had. The actual migration was done during normal hours and no one noticed. The odd thing the Devs noticed that I fixed on the fly, for example, I originally forgot the customization specs! But because the old vCenter was still running you can still pull everything you need even when everything is in a disconnected state as it’s all there in the db.
I deployed new instances of SRM and VR and configured them all up so they were good to go. The SRM configuration when I initially did it for the business I created a spreadsheet detailing it all and since all this heavy lifting was done at the start, re-creating it all was pretty simple and didn’t take that long
Once everything was in the new VCSA I then used Veeams repointing scripts to repoint the backups (https://www.veeam.com/kb2136). It’s a pretty simple process and it picked up the majority of the VMs and repointed them. A few it couldn’t find. I had a slight increase in backup storage space till the retention periods expired and space freed up and then everything went back to exactly as it was before. Out of the whole process, this was my biggest concern as I couldn’t really test it beforehand to confirm it worked well and if it didn’t I may have to roll back (which would be pretty simple because everything was just in a disconnected state in the old 5.5 vCenters). I also had to migrate the Veeam DB from the old SQL box to a new SQL box, Veeam makes that super easy and I also had to upgrade Veeam beforehand to a build that supported the 6.5u1
The End!
When it was all said and done, the business was very happy, I told management that there would be the odd niggle or missing bit that would be rectified on the fly and anything that I didn’t think need to be copied across and people couldn’t prove to me they needed were left behind. The old vCenters were left online for a few weeks in case it became apparent something needed to be verified or exported that originally wasn’t needed.
There is now no Linked Mode, I am a firm believer of keeping complexity to a minimum and the business confirmed there was no requirement for linked mode, so this was an easy decision to make. If you have multiple vCenters then I can understand the complexity of deploying and maintaining ELM can be worth it (this is not really an issue now in 6.7u1 and embedded PSCs) otherwise its just easier all round to go without ELM and the same AD user groups are used at both sites.
The post-migration setup:
After all that was done, we can then move onto the hosts, but there is more than enough info out there about upgrading ESXi hosts!
Leave a Reply