在我的当前工作中,人们经常询问我关于使用 PowerCLI 在 vCenter 集群中执行各种任务的问题。在这篇文章中,我将分享我如何学会在 VMware 中导入 OVF 文件。

这是关于最近从同事那里得到协助请求的故事。他需要将自定义监控设备模板导出到正在构建的新 vCenter 集群。我的同事时间紧迫,而且没有访问模板所需的权限。
如果你还没有的话,请确保通过 Install-Module -Name PowerCLI
下载 PowerCLI 模块
连接到 vCenter
我总是乐于使用 PowerShell 或 PowerCLI,所以我迅速跳了进去,全力帮助。我从同事那里收集了必要的信息,然后开始连接到集群:
这只需要片刻就能完成。连接后,你需要知道使用什么动作词。你可以使用 Get-Command -Module PowerCLI
cmdlet 来实现这一点。
有两个 cmdlet 很突出:
Export-VApp
Import-VApp
这两个 cmdlet 看起来正是你需要的。但首先,由于这对我和可能对你来说都是学习的经验,我将更详细地了解每个的正确使用方式。
将虚拟机导出为 OVF 文件
Export-VApp
cmdlet 将默认将关闭的 VM 导出为 OVF 到当前目录,如果未指定路径。
I already have a path in mind so I’m going to be using the C:\Exported-OVF directory but yours may vary. Knowing this, you can then run Export-VApp
against the VM template specifying the destination folder.
但是存在问题。无法将正在运行的 VM 导出为 OVF。别担心,这很容易解决。稍微修改一下代码,并确保首先使用 Shutdown-VMGuest
cmdlet 关闭 VM。
现在模板应用程序已离线,请继续运行之前尝试的 Export-VApp
cmdlet。此过程将花费几分钟,而且一开始并不是一个非常大的应用程序。
完成后,您应该有一个准备好部署到另一个 vCenter 环境中的应用程序。或者不是吗?
导入 OVF 文件
现在应该有一个文件位于您的本地文件系统中。可以导入它。为此,您需要查询数据存储库以及要导入到的 VM 主机。然后,您可以使用这两个对象传递给 Import-Vapp
cmdlet 进行导入。
但等等!这不起作用。在我的情况下,这失败了,因为我没有注意到我实际上是连接到另一个 vCenter 群集。
当我开始导入先前导出的 VM 应用程序时,发生了一系列红色错误消息。
I read the error message, and sure enough, the host is not a part of a vCenter cluster and therefore does not have proper licensing to complete the import using PowerCLI. This is a limitation that VMware enforces.
别担心,我仍然可以连接到主机的 Web 界面,并使用 HTML5 界面手动导入。向导会指导您完成每个步骤,为导入的应用程序命名,选择 OVF、数据存储、部署类型(粗或薄配置),并验证配置。之后,选择 完成,导入过程开始。
虽然先前的导入尝试在vCenter集群中运作良好,但在这种情况下却根本行不通。这比预期的时间稍长,但很直接。 您可以在此处阅读有关该过程的更多信息。
最终,导入成功了,我的同事也按时完成了任务。
总结
在这个练习之前,我并不知道并非所有的PowerCLI cmdlet都在所有情况下都可用。然而,我们俩都学到了一项新技能,并且在经历了一些意外困难的同时,仍然完成了手头的任务。
我们经常匆忙进行IT项目,寻找’快速’的解决方案。注意您的速度,再花一两分钟提问,退后一步,了解您正在尝试解决的问题。也许您会发现自己会学到一些新东西。