2 Replies Latest reply on Oct 9, 2015 12:26 AM by esxi1979

    Catch failed vmotions

    esxi1979 Hot Shot

      I would like to catch failed vmotions - typical err is, "


      The vMotion migrations failed because the ESX hosts were not able to connect over the vMotion network. "




      How shall i modify below ? thanks


      Function Get-MotionDuration {

          $events = Get-VIEvent -Start (Get-Date).AddDays(-7)

          $relocates = $events |

              where {$_.GetType().Name -eq "TaskEvent" -and $_.Info.DescriptionId -eq "VirtualMachine.migrate" -or $_.Info.DescriptionId -eq "VirtualMachine.relocate"}

          foreach($task in $relocates){

              $tEvents = $events | where {$_.ChainId -eq $task.ChainId} |

                  Sort-Object -Property CreatedTime


                  New-Object PSObject -Property @{

                      Name = $tEvents[0].Vm.Name

                      Type = &{if($tEvents[0].Host.Name -eq $tEvents[-1].Host.Name){"svMotion"}else{"vMotion"}}

                      StartTime = $tEvents[0].CreatedTime

                      EndTime = $tEvents[-1].CreatedTime

                      Duration = New-TimeSpan -Start $tEvents[0].CreatedTime -End $tEvents[-1].CreatedTime

                  SourceHost = $tEvents[0].Host.Name

                  DestinationHost = $tEvents[-1].Host.Name







      Connect-VIServer MyViServer –User Administrator –Password “Pa$$w0rd”


      Get-MotionDuration | FT -AutoSize