특정 접두어와 일치하는 모든 VM의 전원을 끄고 삭제할 스크립트가 있습니다. 다른 자동화 도구를 테스트 할 때이 도구를 사용하여 실험실을 쉽게 재설정 할 수 있습니다. 이 스크립트는 미리 정의 된 여러 vCenter 서버에 연결 한 다음 모든 VM 목록을 가져옵니다. 내가 가지고있는 문제는 VM의 전원을 끄거나 삭제하려고 할 때 "VMMAME 이름이 'VMNAME'인 VirtualMachine을 찾을 수 없다는 것입니다." 두하여 vCenter 서버에서 가상 머신의 목록을 가져옵니다PowerCLI : 여러 vCenter 서버에서 VM 작업
$vcservers = @("VC1","VC2")
Connect-VIServer $vcservers
코드 :
$prefix = "TEST"
ForEach ($vc in $vcservers) {
$vms += Get-VM -Server $vc | where {$_.Name -like "$prefix*"}
}
코드 각 VM을 삭제 전원을 끈 다음하여 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 서버를 검색해야하지만 어떤 이유로 작동하지 않습니다.
EDIT 1/25/17 $ vcservers 변수를 일관되게 만들기위한 코드가 업데이트되었습니다.
'$ vms'에는 무엇이 포함되어 있습니까? 나는 당신이 VM의 배열을 기대하는 동안 그것은 배열의 배열이라고 가정합니다. – Swonkie
두 번째 코드 블록의 검색과 일치하는 가상 컴퓨터 목록이 포함되어 있습니다. 그것은 이름, powerstate 및 기타 속성을 포함하는 배열입니다. – McKenning