警告:VMware vmotion 并不检查在目标主机上的虚拟交换机是否有足够的端口可用。将虚拟机迁移到具有足够多的端口的主机将导致不警告的情况下完成 vmotion, 然而虚拟网卡将会断开!这个问题是在此知识库文章descripbed.
解决这个问题的办法是在创建 vSwitches时要具有足够的端口。你想知道当前每个 vSwitch 上有多少个端口正在使用?vSphere PowerCLI to the rescue! (这句翻译不过来了,rescue:救援)请尝试以下脚本:

$VC = Connect-VIServer "MyVCServer" $myCol = @() ForEach ($VMHost in (Get-VMHost | Sort Name)) { ForEach ($VM in ($VMHost | Get-VM)) { ForEach ($NIC in (Get-NetworkAdapter -VM $VM)) { $myObj = "" | Select VMHost, VM, NIC, PortGroup, vSwitch $myObj.VMHost = $VMHost.Name $myObj.VM = $VM.Name $myObj.NIC = $NIC.Name $myObj.PortGroup = Get-VirtualPortGroup -VM $VM -Name $NIC.NetworkName $myObj.vSwitch = $myObj.PortGroup.VirtualSwitchName $myCol += $myObj } } } $myCol | Group-Object VMHost, vSwitch -NoElement | Sort Name | Select Name, Count Disconnect-VIServer -Confirm:$false

 

 

 

强大的脚本,但可能会修改包含在 vSwitch 上的配置端口数,以便您可以直接从powershell看到是否超过规定的数量?
例如:名称,端口,使用端口,可用端口

$mycol = @()
foreach ($vmhost in (get-vmhost | sort name))
{
foreach ($ports in ($vmhost | Get-VirtualSwitch | where {$_.name -eq “vSwitch2″}))
{
$myobj = “” | select VMhost, Ports, VMcount, Available
$myobj.vmhost = $vmhost.name
$myobj.vmcount = ($vmhost | get-vm | get-networkadapter).count
$myobj.ports = $ports.numports
$myobj.available = ($ports.numports – ($vmhost | get-vm | get-networkadapter).count)
$mycol += $myobj
}}
$mycol