Hi, just wanted to share this piece of code with you. This short script creates a mirror of virtual portgroups from one vSphere ESXi host to another.
I only takes the name and vlan id into account, so all policies, nics and other settings are not migrated at this time, but it is easy to do. I however does not always want that.
You need VMware.PowerCLI module for it to work.
Use it at you own risk.
Import-Module VMware.PowerCLI
connect-viserver <vCenter Name>
$srcHost = Get-VMHost <Source Host Name>
$dstHost = Get-VMHost <Destination Host Name>
# Change the source and destination switch names if you need to
$srcSwitch = $srcHost | Get-VirtualSwitch -Name vSwitch0
$dstSwitch = $dstHost | Get-VirtualSwitch -Name vSwitch0
$srcPGs = $srcSwitch | Get-VirtualPortGroup
$dstSwitch = $dstHost | Get-VirtualSwitch -Name vSwitch1 -ErrorAction:SilentlyContinue
if ($dstSwitch -eq $null) {
$dstSwitch = $dstHost | New-VirtualSwitch -Name $srcSwitch.Name
}
foreach ($srcPg in $srcPGs) {
$pgName = $srcPg.name
$pgVlan = $srcPg.VLanId
$pgExists = $false
foreach ($dstPg in $dstPGs) {
if ($dstPg.Name -eq $pgName) {
$pgExists = $true
}
}
if (-not $pgExists) {
#Write-Host "Creating portgroup $pgName with vlan $pgVlan"
$dstSwitch | New-VirtualPortGroup -Name $pgName -VLanId $pgVlan
}
}