虚拟机批量管理技巧

2018-11-07 09:05顾武雄
网络安全和信息化 2018年6期
关键词:批量文件夹命令

CSV文档批量创建虚拟机

在vSphere 6.0的虚拟化作业环境中,想要批量创建大量虚拟机的方法有很多种,其中最简单的做法就是创建一个.ps1的手稿程序文件,然后在PowerCLI命令行下执行即可,其属性只要输入类似以下范例即可,也就是依序选定ESXi主机的地址、新虚拟机的名称、参考的模板名称、数据存储区名称以及来宾操作系统的自定义规范名称。可是这种做法您得输入多个新虚拟机的信息。另一种方式则是搭配foreach {}循环命令的做法,这种做法只要在每一次创建大量虚拟机时,修改所要创建的虚拟机数量变量与前缀即可。

图3 CSV文件范例

New-vm -vmhost ESX01.lab01.com -Name SVR-01-Template WinServer2012_R2_Template -Datastore E S X 0 1-d a t a s t o r e-OSCustomizationspec WinServer2012_R2_Template

但是,像这种搭配foreach {}循环命令的做法虽然方便,但却无法明确选定每一个虚拟机各自的名称、数据存储区,以及所在的ESXi主机地址。在此建议您采用接下来要讲解的第三种做法,那就是搭配CSV文件的方式来批量创建大量虚拟机,因为CSV的描述文件属性在Excel中维护是非常容易的,并且不需要撰写一个带有foreach {}循环命令的复杂手稿程序。如图3所示,笔者先以Excel创建一个新虚拟机清单,其中同样包含了各项参数设置,比较特别的是我们还加入了CPU数量(NumCPU)与内存大小(MemoryGB)选定。完成编辑后,再另存为新的.csv类型文档即可。

接下来请开启PowerCLI命令界面,并连接登录vCenter Server,然 后 便可以依序输入下列的变量设置以及命令参数的执行,其中在New-VM命令之后的参数,便是用来选定对应的CSV文档域名,例如 这 行 -Template $(Get-Template $_.Template)叙述,即是选定参照Template的域值。一旦成功执行后,将可以看到添加的虚拟机清单。

$C S V = "C:VMTemplate.csv"

$Description = "这是顾大侠以CSV文档批量创建虚拟机的范例"

$VirtualMachines=Import-CSV $CSV

$VirtualMachines | %{New-VM -Name $_.VMName-Template $(Get-Template$_.Template) -VMHost$(Get-VMHost $_.VMHost)-D a t a s t o r e $(G e t-Datastore $_.Datastore)-OSCustomizationSpec$(Get-OSCustomizationSpec$_.OSCustomizationSpec)}

如果执行的过程之中出现了误信息,极有可能是您所选定的CSV文件相关字段信息错误。另外,如果发生某一台ESXi主机无法正常连接时,相对的虚拟机虽然无法成功创建,但系统仍会略过该错误,继续创建下一个新的虚拟机。

批量修改虚拟机设置

如果您想要修改刚刚创建好的新虚拟机的某些属性,例如CPU、内存以及描述说明,则可以直接执行下列命令。其中,-Confirm:$false参数设置表示省略确认提示。

$VirtualMachines |%{ Set-VM -VM $_.VMName-N u m C p u $_.N u m C p u-MemoryGB $_.MemoryGB-Description $Description-Confirm:$false}

再举一个批量修改新虚拟机属性的例子。我们可以将刚创建好的所有虚拟机,其虚拟网卡类型均修改为高效的vmxnet3,这样,可以让虚拟机的网络传输速度最快高达10GB。如果想要关闭或启用网络唤醒功能,则只要设置WakeOneLan参数值为True或False即可。

$VirtualMachines | %{Get-VM -Name $_.VMName| Get-NetworkAdapter |Set-NetworkAdapter -Type vmxnet3 -Confirm:$false}

完成批量大量虚拟机的创建之后,您可以立即登录到vSphere Web Client界面中来查看,便可以发现这些虚拟机仅完成创建并没有启动,因此,如果您想要批量启动这些新的虚拟机,只要接着执行$VirtualMachines |%{ Start-VM -VM $_.VMName-Confirm:$false }命令参数,即可一次完成这些新虚拟机的启动。

删除已成为孤儿的虚拟机

当我们在服务端的命令控制台中,以管理员身分执行vim-cmd vmsvc/destroy vmid命令参数来删除选定的虚拟机时,便会发现虚拟机虽然已经删除,但在vSphere Web Client中 会 出 现orphaned字眼,而在传统的vSphere Client界面中则不会有这现象。解决的方法在过去必须先创建一个虚拟机文件夹,然后将orphaned的虚拟机移动至此文件夹之后,再删除整个文件夹。如今已经不用这么麻烦,只要在它的节点上按下鼠标右键,并点击“所有Virtual Infrastructure操作→从清单中移除”即可。

PowerCLI与传统CLI命令用法的比对

尽管全新PowerCLI命令的使用相较于传统的CLI命令增加了弹性,但对于已熟悉传统CLI命令的管理人员来说,它仍有一些使用的优点,像是在一些管理操作的命令参数上就会比PowerCLI来得简单。举例来说,如果您想要移除VM1虚拟机中的所有快照,在PowerCLI命令的使用上就必须执行Get-VM -name VM1 | Get-Snapshot |Remove-Snapshot。若在传统CLI的命令参数使用上就会简短许多,只要执行vim-cmd vmsvc/snapshot.remove VM1的ID即可。PowerCLI与传统CLI命令用法的比对如表1所示。

图4 取得特定虚拟机已运行的时间

表1 vSphere两种命令语法比对

在如图4所示的范例中,则是通过传统CLI的vim-cmd命令参数,在ESXi服务端命令控制台中先执行vim-cmd vmsvc/getallvms命令来取得所有虚拟机清单,然后再执行vim-cmd vmsvc/get.summary 19 |grep uptimeSeconds命令参数,来查询VMID为19的虚拟机目前已运行的时间(单位=秒)。

结论

无论虚拟化平台的技术在未来会发展到何种程度,GUI操作界面与命令控制台的使用,始终是相辅相成缺一不可的。让我们看看在Windows的窗口世界中,虽然是以GUI界面的友善设计为其根本,但命令提示字符技术的发展在近五年以来却不断向上发展,其中Windows PowerShell的应用更是标榜比Linux的Shell更强更好用,原因就是它必须满足不同应用层次的用户,这包括一般消费者、信息工作者以及IT专业人士。

相对的,在Linux的开源世界中,早已不再强调命令工具有多么强大,反而致力于窗口界面的友善设计来发展,且不管是哪一个Linux的发行版,都希望能够持续发展出有别于Windows的窗口桌面设计概念。如今已有许多成功案例,其中,VMware vSphere便是在这个领域中,发展相当成功的虚拟化平台。

猜你喜欢
批量文件夹命令
只听主人的命令
批量提交在配置分发中的应用
Fast Folders,让你的文件夹四通八达
采用经济数控车床批量车削孔类工件的再实践
移防命令下达后
摸清超标源头 大文件夹这样处理
调动右键 解决文件夹管理三大难题
这是人民的命令
不容忽视的空文件夹
在数控车床上批量钻铰孔类工件的实践