Lets remove some VM´s with PowerShell on Hyper-V 3 in Windows 2012
In the PowerCLI world there is a kind of evil oneliner to remove all VM´s from a datacenter, I was searching for something alike in the Hyper-V v3 world
The PowerCLI command is
Get-VM | %{Stop-VM $_ -Confirm:$false; Remove-VM $_ -DeletePermanently -Confirm:$false
And of course that is pure evil because the parameter -deletepermanently will remove not only the VM but also it´s files from the datastore, The % is to take care of each VM and in case the VM is running I will shut it down (otherwise if I only run like Get-VM | Stop-VM -Confirm:$false | Remove-VM -deletePermanently -Confirm:$false I will only remove the ones running, cause I will get an error on the others because I cannot change state to what it is already)
In Hyper-V and the powershell v3 It is not quite as easy but of course it can be done and don´t you dare use the gui 😉
This approach requires that you have put your VM in a separate folder for each of them (or of course it will be clean in your default Hyper-V VM folder..)
The Remove-VM cmdlet does not allow you to actually remove the VM´s virtual hard disk and the folders (which in some times can become a bit messy after a while)
Here is my VM´s
And here is my folder
So if I remove one VM now with the Remove-VM TestVM1, this also requires that the VM is off.
And lets see in the folders what do we have
So to clean both VM´s and folder data I run all at once and this looks like this
Get-VM testvm* | %{ Stop-VM -VM $_ -Force; Remove-VM -vm $_ -Force ; Remove-Item -Path $_.Path -Recurse -Force}
And see in my VM´s folder how tidy and neat it is 😛
And as I started to describe in the top .. If you just use Get-VM | … you will clean your Hyper-V host quick 🙂
Comments
Simple yet very, very powerfull… me like! 🙂