1 Reply Latest reply on Aug 7, 2020 10:30 PM by LucD

    VM power state not updated and returned correctly

    Duridium Lurker

      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")


      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.