1、统计虚拟机MAC地址

1.1统计所有虚拟机的MAC地址等信息

#连接VC

connect-viserver -server 1.1.1.1 -user administrator -password Vmware1!

#获取所有VM信息

$VMs = Get-VM  *

#循环遍历所有虚拟机MAC地址信息

$vmmac = foreach ($VM in $VMs){  

Get-vm $vm | get-view |

           Select   @{N="虚拟机名称";E={(get-vm $vm).name}},

                    @{N="IP地址";E={(get-vm $vm).Guest.IPAddress[0]}},

                    @{N='MacAddress';E={($_.Config.Hardware.Device | where{$_ -is [VMware.Vim.VirtualEthernetCard]}).MacAddress -join '|'}}

         }

   

#导出统计信息,包括虚拟机名称、IP地址、MacAddress

$vmmac | Export-Csv C:\vmep-mac.csv -NoTypeInformation -UseCulture -Encoding UTF8


=====================================================================

1.2、统计指定虚拟机vm001到vm004虚拟机mac地址,以csv文件方式输入虚拟机信息

maccwb.csv文件中仅有1列,列名字name,具体如下:

name

vm001

vm002

vm003

vm004

#导入CSV文件

$mac =Import-Csv C:\yili\maccwb.csv

#从csv文件中获取虚拟机名称

$VMs = get-vm  -name  $mac.name  

#循环遍历制定虚拟机的MAC地址信息  

$vmmac = foreach ($VM in $VMs){  

Get-vm $vm | get-view |

           Select   @{N="虚拟机名称";E={(get-vm $vm).name}},

                    @{N="IP地址";E={(get-vm $vm).Guest.IPAddress[0]}},

                    @{N='MacAddress';E={($_.Config.Hardware.Device | where{$_ -is [VMware.Vim.VirtualEthernetCard]}).MacAddress -join '|'}}

         }

   

#导出统计信息,包括虚拟机名称、IP地址、MacAddress

$vmmac | Export-Csv C:\yili\ccccwwwwbbbbmac.csv -NoTypeInformation -UseCulture -Encoding UTF8



2、更新Mac地址

<#ldmac.csv文件内容包括2列,vmname列和vmmac列,具体如下:

vmname,vmmac

vm001,11:22:33:44:55:01

vm002,11:22:33:44:55:02

vm003,11:22:33:44:55:03

vm004,11:22:33:44:55:04#>

#导入csv文件ldmac.csv

$ldmacs = import-csv C:\yili\macaddress\ldmac.csv

#遍历$ldmacs执行mac地址更改

foreach($ldmac in $ldmacs) {

Get-VM  -name $ldmac.vmname | Get-NetworkAdapter | Set-NetworkAdapter -MacAddress  $ldmac.vmmac  -WakeOnLan:$true    -RunAsync   -Confirm:$false

}