Skip to main content


I attended a VMworld TAM Customer Central session this morning title "What's Next in vCenter Orchestrator" (a.k.a. vRealize Orchestrator).  One of the cool features is vCO-CLI, which has actually been available for about 8 months now as a VMware Fling ( ).  I'm by no means an expert but have used vCO-CLI to debug an issue I was having so I thought I would throw together a short page on it.  This will hopefully give an idea of how the tool can be used.  I'm not going to go through how to install the plug-in.

I'll start with creating a very basic workflow which takes just a VcHostSystem as an Input parameter.

Next, I'll add just a Scriptable task with my VcHostSystem as an IN parameter.  This Scriptable task has only one line which is what starts the vCO-CLI session.

That's it!  Now we can run the workflow providing a VcHostSystem object.

If you check the Logs tab on the running workflow then you'll see the session id assigned.

Now we can start the vcocli-gui (either vcocli-gui.bat if using Windows or vcocli if using Linux).  When the application starts you get the following login screen.  Login using the same credentials as the running workflow.

Click the "Attach" button so you can get the session you have running.

Highlight your session and click "Attach" again.  Now you get vCO-CLI GUI.  I recommend you look over the "Help" section to see what's available (this will show you how you can execute workflows, actions from the command window along with other items).

For my workflow I'll be looking at the vmhost object used as the IN parameter.  I'll expand the inventory to show that we see in the output window matches what we see in the inventory.

Now to check the vmhost object

As you can see, these are the same properties you use in Scriptable tasks or actions you create.  You can also use any of the methods available to the object.  If you've made any changes to the object prior to executing "startSession()" then those changes will be reflected here.  Using vCO actions then it's pretty simple as well (note the syntax difference):

When you're done debugging/troubleshooting you can simply disconnect from the session which will cause the workflow to continue where it left off.

Remember, when you're working in the vCO-CLI gui you are working on the actual object so anything you do in this GUI is real-time - so be careful what you do.


Popular posts from this blog

Reconnecting ESXi servers with PowerCLI

We recently needed to re-ip our vCenter servers; each with ~200 ESXi servers which needed to be reconnected - thank goodness for PowerCLI.  Since there isn't a "Reconnect-VMHost" cmdlet provided by PowerCLI we needed to check the HostSystem Object at and to see what methods were available (hint: there's a ReconnectHost_Task method which will do the trick).  We can still leverage the "Get-VMHost" cmdlet to return the disconnected ESXi servers and then call the ReconnectHost_Task method to reconnect each ESXi server.  The code is fairly short:

Get-VMHost -state Disconnected | foreach-object {
  $vmhost = $_
  $connectSpec = New-Object VMware.Vim.HostConnectSpec
  $connectSpec.force = $true
  $connectSpec.hostName = $
  $connectSpec.userName = 'root'
  $connectSpec.password = 'MySecretPassword'

Querying for nested folders with PowerCLI

Have you fought trying to query nested, duplicate-named folders?  Hopefully this will help solve the problem!  Suppose you have a VM folder-tree similar to this:

So, how do you get the "\dotcom\linux\dev" folder using PowerCLI?  If you query for just "dev" then you can get an array of folders.
You can parse through the array and, using the parent object, traverse the tree backwards validating the folder names.  But, what if you have 100s of folders?  In my opinion, this is not an optimal approach.  We really need to do this:

This is great case for recursion.  In my words, recursion is a "stack" of operations.  When an operation completes its result is used by the next operation in the "stack".  Most importantly there has to be base-case which causes the last operation in the stack to return a valid result.  Then each operation can be popped off the "stack" and its result can be used by the previous operation until the final result is obta…

Parsing XML with VMware Orchestrator

For my first blog I thought I would start with something easy - parsing XML using VMware Orchestrator (a.k.a vCO)!  I started playing with vCO in September 2012 for a "Cloud" project so I still consider myself a newbie - if you happen across this post and find something incorrect or something that could be done better then please don't hesitate to speak up.

Since I can't post our actual XML, I'll be using the following XML which will give the gist of how to parse for elements & attributes.

<?xml version="1.0" encoding="UTF-8" ?>
  <person firstname="Jack" lastname="Smith" age="40">
    <phone type="home" number="1234567890" />
    <phone type="cell" number="1234567891" />
<sport name="basketball" position="shooting guard" />
  <person firstname="Jill" lastname="Smith" age=&q…