Some adsi methods return a safe array. Use it by method:
var vbArray = new VBArray(adsiObj.GetEx("cn"))
var values = vbArray.toArray()
So, some adsi methods need a safe array. There is a function of a conversation from javascript array to safe array.
function SafeArray()
{
var dic = new ActiveXObject("Scripting.Dictionary");
var a = arguments;
if (1 == a.length && 'object' == typeof a[0] && Array == a[0].constructor)
a = a[0];
for (var i = 0; i < a.length; i++)
dic.Add(i, a);
return dic.Items()
}
Example of an using:
var userObj = GetObject("LDAP://" + someDN);
userObj.GetInfoEx(SafeArray("department", "title"), 0);
var title = userObj.Get("title");
Advanced
This is a library code extends VBArray object.
//********************************************************************************
// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND,
// EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED
// WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE.
//
// IF YOU WANT THIS FUNCTIONALITY TO BE CONDITIONALLY SUPPORTED,
// PLEASE CONTACT ONE IDENTITY PROFESSIONAL SERVICES.
//*********************************************************************************
// ----------------------------------------------------------------------------
// VBArray
// ----------------------------------------------------------------------------
(function()
{
var dic = new ActiveXObject("Scripting.Dictionary");
//
// Returns safe array from JavaScript array
//
// Example of an using,
// var safeArray1 = VBArray.parse(["A", "B", "C"]) // returns an array has 3 items
// var safeArray2 = VBArray.parse("A", "B", "C") // returns an array has 3 items
VBArray.parse = function()
{
var a = arguments;
if (1 == a.length && "object" == typeof a[0] && Array == a[0].constructor)
a = a[0];
for (var i = 0; i < a.length; i++)
dic.Add(i, a);
var values = dic.Items();
dic.RemoveAll();
return values
}
//
// Returns JavaScript array from safe array.
//
// Example of an using,
// var array1 = VBArray.toArray(safeArray)
VBArray.toArray = function()
{
if (0 == arguments.length || null == arguments[0])
return null
var temp = new VBArray(arguments[0])
return temp.toArray()
}
//
// Returns a length of a VBArray instance
//
// Example of an using,
// var count = VBArray.parse(["A", "B", "C"]).count() // it equals: ["A", "B", "C"].length
VBArray.prototype.count = function()
{
return (1 + this.ubound() - this.lbound())
}
}
Using example:
WScript.Echo("Conversation using");
var safeArray = VBArray.parse("A", "B", "C")
var vbArray = new VBArray(safeArray)
WScript.Echo(" VBArray");
for (var i = 0; i < vbArray.count(); i++)
WScript.Echo(" " + i + ": " + vbArray.getItem(i));
// direct get js array
WScript.Echo(" JS Array");
var jsArray = VBArray.toArray(safeArray);
for (var i = 0; i < jsArray.length; i++)
WScript.Echo(" " + i + ": " + jsArray);
WScript.Echo("Samples of conversation");
var vb = (new ActiveXObject("Scripting.Dictionary")).Items();
WScript.Echo("[0] " + vb.count());
WScript.Echo("[1] " + VBArray.parse(["A"]).count());
WScript.Echo("[2] " + VBArray.parse("A").count());
WScript.Echo("[3] " + VBArray.parse(["A", "B", "C"]).count());
WScript.Echo("[4] " + VBArray.parse("A", "B", "C").count());
WScript.Echo("[5] " + VBArray.parse([new ActiveXObject("Scripting.Dictionary")]).count());
WScript.Echo("[6]" + VBArray.parse(new ActiveXObject("Scripting.Dictionary")).count());
//***** END OF CODE ***************************************************************