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.
The code is:
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!
[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!