This is a fairly simple script but I thought I’d share. I needed to delete a group of about 6 virtual machines this morning. I could easily do this through the vSphere GUI but I figured I’d write a quick script so I could use it for future deletions.
$VMs = (Get-Content servers.txt) foreach($vm in $VMs){ $active = Get-VM $vm if($active.PowerState -eq "PoweredOn"){ Stop-VM -VM $vm -Confirm:$false Start-Sleep -Seconds 10 Remove-VM -VM $vm -DeleteFromDisk -Confirm:$false -RunAsync} else {Remove-VM -VM $vm -DeleteFromDisk -Confirm:$false -RunAsync} }
Updated Script:
$VMs = (Get-Content servers.txt) $vmObj = Get-vm $vms foreach($active in $vmObj){ if($active.PowerState -eq "PoweredOn"){ Stop-VM -VM $active -Confirm:$false -RunAsync | Out-Null} } Start-Sleep -Seconds 7 foreach($delete in $vmObj){ Remove-VM -VM $delete -DeleteFromDisk -Confirm:$false -RunAsync | Out-Null}
This script will run a lot quicker and the code is a bit cleaner.