Notes of a scripter

How to stop non-responsive VM with PowerCLI

What do you do after trying to stop a VM that isn’t working. Either you and hope and pray that it will start reponding to vSphere commands, or you can Kill-VM.

Function Kill-VM {
      <# .SYNOPSIS Kills a Virtual Machine. .DESCRIPTION Kills a virtual machine at the lowest level, use when Stop-VM fails. .PARAMETER VM The Virtual Machine to Kill. .PARAMETER KillType The type of kill operation to attempt. There are three types of VM kills that can be attempted: [soft, hard, force]. Users should always attempt 'soft' kills first, which will give the VMX process a chance to shutdown cleanly (like kill or kill -SIGTERM). If that does not work move to 'hard' kills which will shutdown the process immediately (like kill -9 or kill -SIGKILL). 'force' should be used as a last resort attempt to kill the VM. If all three fail then a reboot is required. .EXAMPLE PS C:\> Kill-VM -VM (Get-VM VM1) -KillType soft
 
      .EXAMPLE
         PS C:\> Get-VM VM* | Kill-VM
 
      .EXAMPLE
         PS C:\> Get-VM VM* | Kill-VM -KillType hard
   #>
   param (
      [Parameter(Mandatory=$true, Position=0, ValueFromPipeline=$true)]
      $VM, $KillType
   )
   PROCESS {
      if ($VM.PowerState -eq "PoweredOff") {
         Write-Host "$($VM.Name) is already Powered Off"
      } Else {
         $esxcli = Get-EsxCli -vmhost ($VM.VMHost)
         $WorldID = ($esxcli.vm.process.list() | Where { $_.DisplayName -eq $VM.Name}).WorldID
         if (-not $KillType) {
            $KillType = "soft"
         }
         $result = $esxcli.vm.process.kill($KillType, $WorldID)
         if ($result -eq "true"){
            Write-Host "$($VM.Name) killed via a $KillType kill"
         } Else {
            $result
         }
      }
   }
}

I find this script on the internet and I have integrated into my host profile for PowerShell. Now it is a simple command to kill a non-responsive VM.

Get-VM $VMName | Kill-VM -KillType Soft

Or

Get-VM $VMName | Kill-VM -Killtype Hard

This script was found from Virtu-Al.net

– Stuart

Exit mobile version