在vCO中将字符串转为对象

当创建虚拟机的时候你可能需要将虚拟机根据不同的属性放入不同的OU中,比如根据角色、组、用户组等。在vRealize Automation Center (vRA)中可以很轻易地创建一个下拉菜单实现这类属性的选择,但是这类属性的值往往都以字符串的形式传递到vRO中,而vRO的活动目录工作流中并没有提供字符串转OU对象的功能。

[do_widget “Language Switcher” wrap=aside title=false]

在网上找到了一篇解释如何在vRO中把字符串转化成OU对象的文章,很不错。估计这个功能以后会经常用到,所以我打算创建一个可以重用的工作流。

  1. 先读一下上边这篇文章,并理解其中代码的意思。
  2. 我是根据服务器角色来划分OU的,比如Production、Development、POC等。OUs
  3. 我是用自定义动作来实现转化的。WorkFlow2

代码如下:

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

概括来说你需要创建一个输入参数targetOU,这个参数把字符串导入自定义动作。变量Temp用呈现OU的区别名称(DN),这里我直接把DN其余部分直接写进去了。剩下的代码和文章中所说的一致,只是在If判断中我加了个return ou确保最终获得的OU对象返回出来。

这个自定义动作创建后,其他的就简单了,只要创建一个工作流把这个动作拖进去,定义一个输入参数就行了。