#Change VM Port Group - changevmportgroup.ps1
#Erik Hinderer
#ehinderer@vmware.com
#Version 0.3
# Script to migrate all VM vNICs from one portgroup to another
# Script takes input (VLAN ID) on the command line and imports a CSV file with candidate VLAN/portgroup information
# CSV file: "VLAN","portgroup","wire"
# where "wire" is the ip notation of the network, which is assumed to be the ending string of the virtualwire name
# Script is intended to faclitate migrating to/from VXLAN virtual wires
$vcenter = "myvcenterFQDN"
$vlan = $args[0]
cls
If (!$vlan) {
"Please enter a VLAN ID"
} Else {
$importportgroups = import-csv c:\scripts\ImportPortGroups.csv
$portgroup = ($importportgroups | where {$_.VLAN -eq $vlan}).portgroup
$wire = ($importportgroups | where {$_.VLAN -eq $vlan}).wire
if (!$defaultviserver) {connect-viserver $vcenter}
$wirename = get-virtualportgroup |where {$_.name -like "*$($wire)"}
$pg = get-virtualportgroup -name $portgroup
"`nYou have selected VLAN $($vlan) which maps port group $($pg.name) to virtual wire $($wirename.name)`n"
$conf = Read-Host "Is this correct? (Y/N)"
if ($conf -eq "y") {
cls
"Counting vNICs`n"
$vms = get-vm
$wirevms = $vms| get-networkadapter |where {$_.networkname -eq $wirename.name}
$pgvms = $vms| get-networkadapter |where {$_.networkname -eq $pg.name}
"`nThere are $($pgvms.count) VM vNICs on the portgroup and $($wirevms.count) VM vNICs on the virtual wire.`n"
"Press 1 to move all VMs on the portgroup to the virtual wire. Press 2 to move all VMs on the virtual wire to the portgroup.`n"
do {
$key = Read-Host "Or press C to cancel. [1/2/C]"
}until ("12C" -match $key)
if ($key -eq "1") {
$out = $pgvms | set-networkadapter -networkname $wirename.name -Confirm:$false
} elseif ($key -eq "2") {
$out = $wirevms | set-networkadapter -networkname $pg.name -Confirm:$false
} else {exit }
"`nMigration completed, recounting vNICs.`n"
$wirevms = $vms| get-networkadapter |where {$_.networkname -eq $wirename.name}
$pgvms = $vms| get-networkadapter |where {$_.networkname -eq $pg.name}
"`nThere are now $($pgvms.count) VM vNICs on the portgroup and $($wirevms.count) VM vNICs on the virtual wire.`n"
}
}