在我的現職中,我常常被問到如何使用PowerCLI在vCenter集群中執行各種任務。在這篇文章中,我將分享我如何學習在VMware中導入OVF檔案的方法。

這是一個關於最近一位同事尋求協助的故事,他需要將一個自定義的監控工具複製到正在建立的新vCenter集群中。我的同事時間緊迫,且沒有必要的存取權限來存取該模板。
如果你還沒有安裝,請確保通過Install-Module -Name PowerCLI
下載PowerCLI模組。
連接到vCenter
我從不錯過使用PowerShell或PowerCLI的機會,所以我立即跳入幫助的行列。我從同事那裡收集了必要的信息,並開始連接到集群:
這只需要一點時間即可完成。連接之後,你需要知道使用哪些動詞。可以使用Get-Command -Module PowerCLI
這個cmdlet來查看。
有兩個cmdlet非常重要:
Export-VApp
Import-VApp
這兩個cmdlet似乎正是你需要的。但首先,因為這對我來說也是一次學習的機會,我將更深入地瞭解每個cmdlet的正確使用方法。
將虛擬機導出為OVF檔案
Export-VApp
命令將關機的虛擬機以 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.
但是有個問題,你無法將正在運行的虛擬機匯出為 OVF。不用擔心,這可以快速解決。稍微修改你的代碼,首先使用 Shutdown-VMGuest
命令關機虛擬機。
現在模板虛擬機已經關機,可以繼續運行之前嘗試的 Export-VApp
命令。這個過程需要幾分鐘的時間,而且模板虛擬機本身並不是很大。
完成後,你將擁有一個可以部署到另一個 vCenter 環境的虛擬機模板。或者不是這樣嗎?
匯入 OVF 檔案
現在你的本地文件系統中應該有一個檔案。可以進行匯入。為了這樣做,你需要查詢要匯入的 datastore 和虛擬機主機。然後可以將這兩個對象傳遞給 Import-Vapp
命令以進行匯入。
但等等!這樣不起作用。在我的情況下,這個操作失敗是因為我沒有注意到我實際上是連接到另一個 vCenter 群集。
當我開始匯入之前匯出的虛擬機模板時,出現了一大堆紅色錯誤訊息。
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.
不用擔心,我仍然可以連接到主機的網頁界面,並使用 HTML5 介面手動匯入。嚮導會引導你完成每個步驟,給匯入的虛擬機模板取個名字,選擇 OVF、datastore、部署類型(厚或薄配置),然後驗證配置。之後,選擇完成,匯入開始。
雖然之前的導入嘗試在vCenter集群中運作良好,但在這種情況下根本行不通。這比預期的花了一點時間,但卻很簡單。你可以在這裡閱讀更多關於這個過程的資訊。
最後,導入成功了,我的同事也趕上了截止日期。
總結
在這次練習之前,我不知道並非所有的PowerCLI cmdlet都適用於所有情況。然而,我們兩個都學到了一個新技能,雖然遇到了一些意外的困難,但仍然完成了手頭的任務。
我們太經常匆忙地進行IT項目,尋求“快速”的解決方案。 注意你的速度,再花一兩分鐘來提問,退後一步,了解你試圖解決的問題。你可能會發現你會學到一些新東西。