我有一個腳本可以關閉並刪除所有匹配某個前綴的虛擬機。在測試其他自動化工具以便重置實驗室時,我會使用它。腳本連接到多個預定義的vCenter服務器,然後獲取所有虛擬機的列表。我遇到的問題是,當我嘗試關閉或刪除虛擬機時,它會顯示「找不到名爲」VMNAME「的VirtualMachine。」從兩者的vCenter服務器獲取虛擬機列表PowerCLI:在多臺vCenter服務器上使用虛擬機
$vcservers = @("VC1","VC2")
Connect-VIServer $vcservers
代碼:
$prefix = "TEST"
ForEach ($vc in $vcservers) {
$vms += Get-VM -Server $vc | where {$_.Name -like "$prefix*"}
}
代碼,關機和刪除每個虛擬機:連接到vCenter服務器
代碼
ForEach ($vm in $vms) {
$vmname = $vm.name
if ($vm.PowerState -eq "PoweredOn") {
Stop-VM -VM $vmname -confirm:$false
Remove-VM -VM $vmname -DeletePermanently -confirm:$false
}
}
我已經通過使用Set-PowerCLIConfigu在Users和AllUsers範圍上設置了「Multiple」屬性因此它應該搜索所有vCenter服務器,但出於某種原因,它不起作用。
編輯1/25/17 已更新代碼以使$ vcservers變量保持一致。
'$ vms'包含什麼?我認爲它是一個數組數組,而你期望有一組虛擬機。 – Swonkie
它包含與第二個代碼塊中的搜索匹配的虛擬機列表。它是一個包含名稱,powerstate和其他屬性的數組。 – McKenning