When you put virtual machine to particular OU, you may refer to virtual machine properties, such as ‘server role’, ‘server group’ or ‘user group’…etc. It’s easy to set a drop-list in blueprint of vRealize Automation Center (vRA) to let users choose this kind of properties but hard to create a computer account in corresponded OU location in vRO. That’s because vRA passes most of values to vRO as strings, Active Directory workflows in vRO do not provide a way to convert string to OU.
[do_widget “Language Switcher” wrap=aside title=false]
I found a nice article explains how to convert string to OU object in vRO. I may use this feature frequently in vRA so I decided to create a workflow to make it reusable.
- Please make sure you read the article above and understand what it’s talking about.
- I put virtual machine to OU base upon server role. Like “Production”, “Development” and “POC”…etc.
- I created customized action below to convert string to OU object.
The code is:
Temp = "OU="+targetOU+",OU=Server,DC=CONTOSO,DC=COM"; var searchOU = Temp.split("=")[1].split(",")[0]; System.log("Search OU: " +searchOU); var ouArray = ActiveDirectory.search("OrganizationalUnit", searchOU); System.log("ouArray is:"+ouArray); var ouIndex = ouArray.map(function(e) { return e.distinguishedName.toLowerCase(); }).indexOf(Temp.toLowerCase()); if (ouIndex > -1) { ou = ouArray[ouIndex]; System.log("Found OU: " +ou.distinguishedName); return ou; } else { throw("OU not found"); }
Basically you need to create a input parameter – “targetOU“, it bring string into the action. Then variable “Temp” hard code the distinguish name with “targetOU“. Rest of codes are same like the article above, just one thing, I added “return ou” in if section to make sure the action can returns object of AD:OrganizationUnit type.
Life is easy after the customized action is created. You just need to drop the action to a new workflow, define input parameter and run it!