当前位置: 首页 > 虚拟化 > 通过PowerCLI批量修改虚拟机端口组

通过PowerCLI批量修改虚拟机端口组

虚拟化 0条评论 2020-2-9 2,917 views

当虚拟机规模越来越大,我们就会发现批量虚拟机的需求越来越多,例如以下场景:

  • (本文实现)虚拟机网络变更,需要批量修改虚拟机连接到新的端口组上;
  • 虚拟化部署,需要按照标准配置进行初始化
  • 虚拟机VMTools升级策略变更

本文通过VMware PowerCLI对虚拟机的网络端口组进行批量修改,并导入例外列表(例如:NSX管理虚拟机不需要更改端口组)。

安装PowerCLI参考:离线安装VMware PowerCLI

连接vCenter Server

Connect-VIServer <VC_IP/VC_URL> -User Administrator@vsphere.local -Password <VC_PASSWORD>

(可选)创建例外虚拟机列表exclude-vm-list.csv,内容如下:

Name
VM1
VM2
VM3

执行批量修改脚本

提示:批量修改操作要谨慎,建议先在测试环境进行多次测试,再使用到生产环境。
脚本分为五个步骤:

  1. 准备例外列表文件,您可以通过vSphere Web Console或PowerCLI导出整体虚拟机列表,再保留需要例外的虚拟机;
  2. 导入例外虚拟机名到$list列表,此时虚拟机并不是真正想要操作的虚拟机,此对象会用于下一步获得需要更改的虚拟机列表;
  3. 通过foreach循环遍历$list列表,并使用Get-VM函数取到例外虚拟机对象,将例外虚拟机对象添加到$entry数组;
  4. 使用where和-ne参数判断哪些虚拟机的名字不等于$entry数组中的名字,进而取到了需要修改的虚拟机对象数组$vms;
  5. Get-NetworkAdapter获得虚拟机的所有网络适配器,Where查找连接网络名为“VLAN-OLD”的网络适配器,Set-NetworkAdapter函数设置为新的“VLAN-NEW”网络,Confirm:$false用于静默执行。
    ##############################################
    #Change VM Network with exclude list
    ##############################################
    # Import exclude list from exclude-vm-list.csv
    $list = Import-Csv "C:\exclude-vm-list.csv"
    # Generate array
    foreach ($entry in $list) {[string[]]$exclude += Get-VM -Name $entry.Name}
    # Get target vm list
    $vms = Get-Vm | where {$exclude -ne $_.Name}| Select Name
    # Change VM networkAdapter
    $vms | Get-NetworkAdapter | Where {$_.NetworkName -eq "VLAN-OLD" } | Set-NetworkAdapter -NetworkName "VLAN-NEW" -Confirm:$false

    完成虚拟机端口组修改

通过这个示例我们可以发现“自动化”对与工作效率和缩短故障时间帮助非常大,后续我会继续分享更多自动化脚本,以帮助到大家提高效率。

其实,我也是只用了两天学习的PowerCLI,还是非常易学的,PowerCLI支持在Windows、Linux和Mac系统上运行,并且支持vSphere、vSAN、SRM、vRA、NSX-V、NSX-T等产品。


标签: ,

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注