Connection to VI - VirtualMachine returning Powered Off

Jun 2, 2009 at 4:32 AM


I am trying to use your library to automate some tasks inside a virtual machine with  I am able to make a successful connection to vCenter and get a list of VMs with the following code:




<font size="2">




Dim virtualHost As VMWareVirtualHost = New VMWareVirtualHost()
' connect to vCenter
virtualHost.ConnectToVMWareVIServer("localhost", "Administrator", "vmware1!")<font size="2">




Dim virtualMachine As VMWareVirtualMachine<font size="2">




For Each VMWareVirtualMachine In virtualHost.RunningVirtualMachines

MsgBox(virtualMachine.PathName & "Running: " & virtualMachine.IsRunning)



This successfully shows my running VMs but the .IsRunning propery comes back as False.  This is causing me problems when I go to execute:



<font size="2">



"Administrator", "password")

<font size="2">



"notepad.exe", String.Empty)

I get an exception that the Virtual Machine must be running when it tries to execute the LoginInGuest command.

Any suggestions what I might be doing wrong here.  I am going to try your c# code as well to see if that might be the issue but I don't think so, I have converted the c# to VB properly.


Jun 2, 2009 at 1:17 PM

It's like a physical server. You know it's there, but if it's not powered on, you can't login to it. You need to PowerOn and WaitForToolsInGuest.

Jun 2, 2009 at 1:25 PM

Thanks for the response, I actually just figured out what was going on.  I was connecting to VC that was behind a NAT firewall and my program didn't have access to the ESX servers themselves.  I guess this API, once it figures out where the VM lives, talks to the ESX host not VC after that.