Check ESXi Host Task Progress using esxcli

Enable and connect via SSH on the host

(if SSH is not already enabled on your ESXi host)

  1. vCenter Web Console → Host → Config → Security Profile → Edit → SSH → Start
  2. SSH to the host with the local root credentials

Check for currently processing tasks on the host

~ # vim-cmd vimsvc/task_list

(ManagedObjectReference) [
'vim.Task:haTask-3-vim.VirtualMachine.removeAllSnapshots-74841465'
]

Check the progress statistics for a specific task

The example below is from a large snapshot removal.

Task in Progress (91% complete)

~ # vim-cmd vimsvc/task_info haTask-3-vim.VirtualMachine.removeAllSnapshots-74841465

(vim.TaskInfo) {
dynamicType = <unset>,
key = "haTask-3-vim.VirtualMachine.removeAllSnapshots-74841465",
task = 'vim.Task:haTask-3-vim.VirtualMachine.removeAllSnapshots-74841465',
description = (vmodl.LocalizableMessage) null,
name = "vim.VirtualMachine.removeAllSnapshots",
descriptionId = "VirtualMachine.removeAllSnapshots",
entity = 'vim.VirtualMachine:3',
entityName = "VM-Name",
state = "running",
cancelled = false,
cancelable = true,
error = (vmodl.MethodFault) null,
result = <unset>,
progress = 91,
reason = (vim.TaskReasonUser) {
dynamicType = <unset>,
userName = "vpxuser",
},
queueTime = "2018-10-11T16:52:29.489852Z",
startTime = "2018-10-11T16:52:29.490065Z",
completeTime = <unset>,
eventChainId = 74841465,
changeTag = <unset>,
parentTaskKey = <unset>,
rootTaskKey = <unset>,
}

Task Completed (100%)

~ # vim-cmd vimsvc/task_info haTask-3-vim.VirtualMachine.removeAllSnapshots-74841465

(vim.TaskInfo) {
dynamicType = <unset>,
key = "haTask-3-vim.VirtualMachine.removeAllSnapshots-74841465",
task = 'vim.Task:haTask-3-vim.VirtualMachine.removeAllSnapshots-74841465',
description = (vmodl.LocalizableMessage) null,
name = "vim.VirtualMachine.removeAllSnapshots",
descriptionId = "VirtualMachine.removeAllSnapshots",
entity = 'vim.VirtualMachine:3',
entityName = "VM-Name",
state = "success",
cancelled = false,
cancelable = true,
error = (vmodl.MethodFault) null,
result = <unset>,
progress = 100,
reason = (vim.TaskReasonUser) {
dynamicType = <unset>,
userName = "vpxuser",
},
queueTime = "2018-10-11T16:52:29.489852Z",
startTime = "2018-10-11T16:52:29.490065Z",
completeTime = "2018-10-11T19:43:50.958741Z",
eventChainId = 74841465,
changeTag = <unset>,
parentTaskKey = <unset>,
rootTaskKey = <unset>,
}