VMware Cloud Community
Duridium
Contributor
Contributor

VM power state not updated and returned correctly

I'm trying to power on VMs which I previously powered off using PowerCLI.

When I try to run the following script (part of a bigger one) I still get a status which is not "PoweredOn", even though I can see on the VSphere console that the machine was powered on.

I get this also in other situations and I try to re-get the virtual machines, but I fail to make this work.

If I don't re-get the VMs, I sometimes get error claiming the VM I'm referring to is null. What am I doing wrong? What am I missing?

Here are the script lines:

$VMs = get-vm | Where-object {($_.Name -like $vmNamePatternToSearch)}# | Out-Null
foreach ($vm in $VMs) {
     #$vm = Get-VM -Name $vm.Name #| Out-Null
     if ($vm.powerstate -ieq "poweredoff") {
          Start-VM -VM $vm -Confirm:$False | Out-Null
          Write-Host -NoNewline 'Powering On' $vm.Name.ToString().PadRight(22)
          do {
               Start-Sleep -Seconds 1
                 Write-Host -NoNewline '|' $vm.powerstate
            } until ($vm.powerstate -ieq "PoweredOn")
       Write-Host
     }
}

So my output is "| PoweredOff| PoweredOff| PoweredOff| PoweredOff| PoweredOff|..."
Even though the machine is already up.
Even if I un-comment the "#$vm = Get-VM -Name $vm.Name #| Out-Null" line - still no go.

I would appreciate your input.

Thanks!

0 Kudos
1 Reply
LucD
Leadership
Leadership

The object returned by Get-VM is not refreshed automatically.

You will have to do another Get-VM, each time, to get the actual state.


Blog: lucd.info  Twitter: @LucD22  Co-author PowerCLI Reference

0 Kudos