什么是VMware PowerCLI?

VMware PowerCLI是什么?简单来说,它是一个功能强大的命令行界面(CLI)工具,作为Windows PowerShell模块分发。它提供了用于管理和自动化vSphere、VMware Site Recovery Manager、vSphere Automation SDK、vCloud Director、vSphere Update Manager等的cmdlet。

简单地说,它可以通过自动化vSphere常规任务和重复操作(例如,从ESXi导出虚拟机)为您节省大量时间,尤其是当您管理大量主机或虚拟机时。通过提供800多个cmdlet PowerCLI,您可以自动化vSphere管理的各个方面,包括网络、存储、虚拟机、任务等。

VMware
 

在本文中,我们将向大家介绍一下基本的VMware PowerCLI命令,并演示如何使用基本cmdlet来自动创建多个虚拟机。

如何在VMware中安装和使用PowerCLI?

与安装Hyper-V PowerShell模块相同,在运行针对VMware的PowerCLI命令之前,我们还需要安装和更新VMware PowerCLI模块。

现在我们将以基于Windows10的PowerCLI模块的安装和访问为例,向大家演示一下操作流程。

✦ 要安装VMware PowerCLI,需要以管理员身份打开Windows PowerShell,然后运行以下命令:

Install-Module -Name VMware.PowerCLI

注意:使用“-Scope CurrentUser”参数,Powershell可以在没有管理员访问权限的情况下安装模块。语法为:Install Module-Name VMware.PowerCLI-Scope CurrentUser

如果看到警告“您正在从不受信任的存储库安装模块”,请键入Y并按Enter继续。

您正在从不受信任的存储库安装模块
 

如果您无法从Microsoft下载PowerCLI模块,或者希望脱机安装PowerCLI,您可以选择从主页下载PowerCLI ZIP文件并将其传输到本地计算机:

  • 通过以下命令检查PowerShell模块路径:$env:PSModulePath
  • 将ZIP文件的内容提取到列出的文件夹之一
  • 取消阻止文件的方式:cd和Get-ChildItem * -Recurse | Unblock-File

✦ 要验证PowerCLI模块现在是否可用,请使用以下命令:

Get-Module -Name VMware.PowerCLI* -ListAvailable

✦ 要检查VMware PowerCLI模块的版本,请运行以下命令:

Find-Module -Name VMware.PowerCLI

✦ 要更新到新版本的VMware PowerCLI,请运行以下命令:

Update-Module -Name VMware.PowerCLI

注意:使用更新模块,将不会删除模块的现有版本。您可以卸载模块的现有版本,然后安装新版本。

✦ 要卸载现有版本的VMware PowerCLI模块,请运行以下命令:

Get-Module -Name VMware.Module | Uninstall-Module -Force

✦ 要卸载特定版本的VMware PowerCLI模块,请运行以下命令:

Uninstall-Module -Name VMware.PowerCLI -RequiredVersion [version number]

卸载特定版本的VMware PowerCLI模块
 

11个基本的VMware PowerCLI命令

成功地安装了VMware PowerShell模块后,现在您可以使用VMware vSphere PowerCLI cmdlet来管理主机和虚拟机。

为了帮助大家更好地使用PowerCLI,我们将在本节内容中向大家介绍11个常用PowerCLI命令,大家可以参考参考。

① 连接VIServer:如何连接到vCenter

要管理VMware vSphere,您需要先连接到vCenter服务器,运行以下命令:

Connect-VIServer -Server [server name] -Protocol [http] -User [user name] -Password [password]

② 获取VMHost:如何检索主机信息

Get-VMHost用于检索主机信息。要查看您连接的vCenter Server上的所有主机,请运行以下命令:

Get-VMHost

③ 获取虚拟机:如何检索虚拟机信息

Get-VM是检索VM信息的基本cmdlet。要列出连接的vCenter上的所有虚拟机及其基本信息,请运行以下命令:

Get-VM

如您所见,默认情况下,此命令仅检索Name、PowerState、NumCPU和MemoryGB属性。

如果您想要查看vCenter上特定VM的详细信息,请运行以下命令:

Get-VM -Name [vmname] | Format-List

查看vCenter上特定VM的详细信息
 

④ 启动VM和停止VM:如何启动和停止VM

要在连接的vCenter上启动特定VM,请运行以下命令:

Start-VM ‑VM [vmname]

要关闭虚拟机的电源,请运行以下命令:

Stop-VM ‑VM [vmname]

⑤ 新虚拟机:如何创建新虚拟机

New-VM-cmdlet用于在连接的服务器上创建新的VM。使用以下命令,您可以使用默认设置创建一个新的空白虚拟机,稍后需要部署操作系统:

New-VM -Name [vmname] -VMHost [hostname]

除了创建新的虚拟机,您还可以使用VMware vSphere PowerCLI命令创建新的数据中心或新的文件夹。

要创建新文件夹,基本语法为:

New-Folder -Name [folder name]

获取资源清册根文件夹并在其中创建一个新文件夹。

$folder = Get-Folder -NoRecursion | New-Folder -Name [folder name]

要在-Location参数指定的文件夹中创建新的数据中心,请执行以下操作:

New-Datacenter -Location $folder -Name [datacenter name]

⑥ 移动虚拟机:如何将虚拟机移动到另一个位置

移动虚拟机命令允许您将单个或多个虚拟机从一个主机或数据存储移动到另一个。

要将单个虚拟机实时迁移到另一台主机,请运行以下命令:

Move-VM -VM [vmname] -Destination [hostname]

要将单个虚拟机迁移到另一个数据存储,请运行以下命令:

Move-VM -VM [vmname] -Datastore [datastore name]

要将所有虚拟机从一台主机移动到另一台主机,请运行以下命令:

Get-VMHost [hostname] | Get-VM | Move-VM -Destination (Get-VMHost [hostname])

⑦ 新快照:如何拍摄虚拟机快照

虚拟机快照是虚拟机的一种方便快捷的故障保护措施。还有许多VMware PowerCLI命令可以帮助您快速创建和管理VMware快照。

要创建指定VM的新快照,基本语法为:

New-Snapshot -VM [vmname] -Name [snapshot name]

要创建已通电虚拟机的新快照并保留其内存状态,请执行以下操作:

New-Snapshot ‑VM [vmname] ‑Name [snapshot name] -Description [description] ‑Memory $true

要查看指定VM的所有快照,请执行以下操作:

Get-Snapshot -VM [vmname]

查看指定VM的所有快照
 

⑧ -ToTemplate:如何将VM转换为模板

从一个模板创建多个虚拟机是使用VMware PowerCLI命令的常见操作。在执行此操作之前,您需要一个可用的模板。您可以使用ToTemplate命令将VM转换为模板

要将虚拟机转换为模板,请运行以下命令:

Set-VM -ToTemplate -Confirm:$false

要检索指定数据中心中的所有VM模板,请执行以下操作:

Get-Template -Location [datacenter]

⑨ 调用VMScript:如何更轻松地运行脚本

如果与虚拟机的网络连接丢失,或者需要在单个或多个虚拟机上自动执行任务,Invoke-VMScript可以直接向虚拟机发送命令,而不需要正常的WinRM或SSH连接。例如:

运行PowerShell脚本。在PowerShell中,若要访问环境变量,需要使用以下语法:$env:此外,若要运行程序,需要在程序路径前面指定一个&符号。外部引号($script='…')是很重要的,因为这是在PowerShell中定义字符串变量的方式。内部双引号是很重要的,因为路径中有空格。

$script = '&"$env:ProgramFiles\Common Files\Microsoft Shared\MSInfo\msinfo32.exe" /report "$env:Tmp\inforeport"'
Invoke-VMScript -ScriptText $script -VM VM -GuestCredential $guestCredential

⑩ 获取VICommand:如何查看所有可用的命令

此函数检索导入的VMware模块的所有命令,包括cmdlet、别名和函数。

如果您不确定应该使用什么VMware PowerCLI命令来完成您的工作,那么Get command是检索模块的所有相关命令(包括cmdlet、别名和函数)的一种方便方法:

要检索导入的VMware模块的所有可用命令,请执行以下操作:

Get-VICommand

要检索指定事物(例如快照)的所有相关命令,请执行以下操作:

Get-VICommand *snapshot*

检索指定快照的所有相关命令
 

⑪ 获取帮助:如何访问官方帮助系统

如果您不熟悉VMware PowerCLI,还有一个内置的帮助系统,允许您快速检索针对VMware的PowerCLI命令的使用情况。

运行以下命令以显示命令的基本信息,例如概要、语法和说明:

Get-Help [command]

如果要查看有关该命令的所有帮助信息,包括参数和示例,请运行该命令:

Get-Help [command] -Full

注意:开始之前,您可能需要运行“更新帮助”来安装Windows PowerShell模块的新帮助文件。如果您有一段时间没有更新它,在使用“获取帮助”时可能会提示您更新它。键入Y并按Enter继续,然后您将能够再次进行查询。

查看指定命令的基本信息
 

使用PowerCLI从模板创建单个或多个虚拟机

使用VMware PowerCLI,您可以在单个或多个虚拟机上自动执行各种管理任务。在上一节中,我介绍了几个基本的VMware vSphere PowerCLI命令,稍后您需要完成的是对它们进行总结。在这里,我将以一个模板为例演示如何快速创建多个虚拟机。

要将模板转换为VM,基本语法为:

Set-Template -Template [template name] -ToVM

要从模板创建一个新VM,请运行以下命令:

New-VM -Name [vmname] -Template [template name] -Datastore [datastore name] -ResourcePool [resourcepool name] -Location [folder name] -OSCustomizationSpec [cust name]

要从模板创建10个虚拟机,请运行以下命令:

1..10 | Foreach {$Num = “{0:00}” -f $_
New-VM -Name [vmname] “$Num” -Template [template name] -Datastore [datastore name] -ResourcePool [cluster name] -Location [folder name] -RunAsync}

从模板创建10个虚拟机
 

然后,您可以通过运行以下命令启动虚拟机:

Start-VM [vmname]

创建新的相同虚拟机的更简单方法!

使用PowerCLI将虚拟机导出到OVF模板时,可以将其用作创建多个虚拟机的备份方法。但对于企业级备份来说,这还不够,我们更加建议您使用专业的备份软件——傲梅企业备份旗舰版

在实际使用中,您可以集中化批量化地备份大量虚拟机,支持配置计划任务,以便为付费和免费版本的VMware ESXi或Hyper-V自动轻松地创建虚拟机备份,因此,在需要时,您可以将虚拟机快速恢复到位,或从任何历史备份版本将新虚拟机创建到新位置。

如果您感兴趣的话可以点击下方按钮进入下载中心下载安装傲梅企业备份旗舰版,然后跟着我们的演示教程一起看看如何通过备份还原的方式来创建大量相同的虚拟机吧!

备份虚拟机

步骤1. 绑定设备:打开傲梅企业备份旗舰版,登录您的账号,在主界面中将您的vCenter或ESXi主机添加为源设备。

vCenter或ESXi主机添加为源设备
 

步骤2. 创建备份任务:点击“备份任务”>“新建任务”

新建任务
 

步骤3. 根据您的需求设置备份类型、任务名、设备、备份目标、备份计划、版本清理等。

步骤4. 点击右下角的“开始备份”按钮,然后选择“添加定时任务并立即备份”“仅添加定时任务”

开始备份
 

还原虚拟机

步骤1. 在主界面中转到“备份管理”选项卡,找到您想要还原的历史版本,点击“还原”

还原
 

步骤2. 设置您想要将其还原到的位置、新的名称、RAM大小等,设置完毕后点击“开始还原”即可。

还原到新位置
 

通过这种方式,您可以在原始环境或者新的虚拟环境中更加快速便捷地创建大量相同的虚拟机。

结论

VMware PowerCLI是一个非常深入的领域,一篇文章无法全面介绍它。除了我介绍的常用PowerCLI命令外,您还可以使用许多其他VMware PowerCLI命令来自动执行vSphere上的复杂任务。

但是PowerCLI并不适合作为效率的企业级虚拟机备份解决方案,因此如果您需要备份VMware ESXi或Hyper-V,我们更加推荐选择专业的软件来创建备份。