之前,我們看過 PowerCLI – 它是什麼,如何安裝它,以及如何集成到 Windows Powershell ISE。現在,讓我們來看一下基本腳本,包括連接、PowerCLI 命令,以及循環。
基本 PowerCLI 腳本
讓我們看一下一些基本的 PowerCLI 命令,看看如何輕鬆地開始從我們的 vSphere 環境中提取信息。請注意,以下內容絕不意味著涵蓋所有內容的教程,而是一個 PowerCLI 的介紹,以及如何開始運行命令和學習自動化您的環境。
我們需要運行的第一個命令是實際連接到我們的 vSphere 環境的命令。您可以直接連接到 ESXi 主機或 vCenter 服務器。
要連接,請在啟用 PowerCLI 的 PowerShell 會話中運行以下命令:
connect-viserver –server 〈您的伺服器〉
運行該命令時,系統會提示您輸入登錄憑據。輸入您的用戶名和密碼,用於您的 ESXi 伺服器或 vCenter 服務器。
當我們連接到 ESXi 或 vCenter 時,我們可以運行的最基本的命令之一是查看環境中的所有虛擬機。我們使用 get-vm 命令列出有關客戶虛擬機的信息。
Get-VM - get-vm 命令列出已連接主機上運行的 VM
要從 get-vm
命令獲取更詳細的信息,我們可以使用以下命令顯示完整信息:
Get-VM | fl
– 顯示更詳細的資訊,如客戶操作系統、資源池、VM硬體版本水平、所在資料夾等其他詳細資料。
現在,讓我們從Get-VM命令中返回特定有用的資訊。讓我們找出處於關機狀態的VM。我們可以從Get-VM
命令中獲取資訊,然後將其管道傳遞到where-object
以選擇我們想查詢的特定資訊 – 在這種情況下是PowerState
。正如您所見,通過將這些資訊管道傳遞到另一個PowerShell命令,可以獲得各種各樣的VM資訊。
Get-VM | where-object {$_.PowerState -eq "PoweredOff"}
如您所見,這僅顯示處於”PoweredOff”電源狀態的VM。這可能非常有用。我們甚至可以將上述命令的結果管道傳遞到Start-VM命令。因此,我們基本上可以獲取所有已關機的VM,然後將這些VM開機。
Get-VM | where-object {$_.PowerState -eq "PoweredOff"} | Start-VM
那麼如何關閉特定的VM?我們也可以做到這一點。我們可以按名稱呼叫VM,然後使用Stop-VMGuest命令,該命令啟動客戶操作系統關機。
Get-VM 〈yourvm〉 | Stop-VMguest
如果您不想收到操作的確認,我們可以添加–confirm:false參數:
假設我們想要查看運行中具有分配超過 1 個 CPU 的虛擬機器的數量。同樣,我們可以使用 where-object 命令來選擇 NumCpu 對象。
Get-VM | where-object {$_.NumCpu –gt 1 }
PowerCLI 循環
循環允許您對所選對象或循環多次執行相同操作。例如,使用 foreach 循環,我們可以多次循環執行某個操作。它設置如下虛擬碼:
foreach ($var in $vars){
執行某些操作…
}
如果我們想要具體指定要對其執行操作的對象,我們可以通過從文本文件中循環遍歷特定的 VM 列表來實現。為了填充文本文件,我們可以運行我們的 Get-VM 命令選擇我們想要的屬性,然後將其導向一個文本文件。然後,我們可以使用 PowerShell 讀取文本文件,將 VM 放入一個數組中,我們可以對其進行循環並執行操作。以下是在列表中為 VM 添加新網絡適配器的示例。
Get-vm | where-object {$_.MemoryGB –eq 4 } | select -ExpandProperty Name | out-file c:\VMs.txt
$vms = get-content c:\VMs.txt
Foreach-object ($vm in $vms) {
new-networkadapter -vm $vms -NetworkName "〈Port group name〉" -Type "VMXNET3" –startconnected
}
資源
有很多很棒的網絡資源,包括個人博客網站、官方文件、程式碼範例等等。我發現的是,如果你想做某事,很可能已經有人寫了一行 PowerCLI 代碼來實現你想要的功能。而且好消息是,通常你可以找到非常接近你想要的內容,只需在掌握基礎知識後進行非常少的修改,就可以使其適應你的需求。通過這樣做,你還可以學習 PowerCLI 及其工作原理,以及如何修改代碼以執行你需要完成的任務。
A great place to start with documentation and other resources is the official VMware PowerCLI release and documentation site. Here, you can download the binaries as well as the official User’s Guide.
還有大量的書籍提供腳本和腳本範例,可以進行分析和修改。請記住,VMware 管理員社群中有很多人,他們大多數都樂於分享他們從他人那裡學到的知識,以便成為精通 PowerCLI。與你社群中的這些人聯繫,尋求特定幫助或者僅僅是一般性原則。
思考
PowerCLI 無疑非常強大。在上面展示的示例中,我們只是觸及了其表面。任何你重複執行的任務,或者在網絡客戶端中執行起來很麻煩的任務,都是使用 PowerCLI 編寫腳本的絕佳候選項。事實上,這通常是大多數人接觸 PowerCLI 的方式——他們需要自動執行某個任務,或者根據 vSphere 中的其他操作執行某個操作,或者是適合於腳本的重複性操作。
最佳學習 PowerCLI 的方法是下載它,安裝它,並在實驗環境中開始使用,例如家庭實驗室。只有當您看到使用自動化來控制 vSphere 的潛力時,VMware vSphere 環境的真正力量才會被發掘。所以,開始使用 PowerCLI 進行腳本編寫,您將不會回頭看。
Source:
https://www.nakivo.com/blog/basic-powercli-scripting-vmware-vsphere/