Я пытаюсь получить атрибут объекта в Active Directory, который выглядит как многозначная строка (см. CanonicalName). После выполнения поиска:
var conn;
conn.Open = 'Provider=ADsDSOObject;';
var command = '<LDAP://CN=Partitions,CN=Configuration,DC=domain,DC=com>;(&(objectcategory=crossRef)(systemFlags=3));name,nETBIOSName,nCName,canonicalName;onelevel';
var ado = new ActiveXObject('ADODB.Command');
ado.ActiveConnection = conn;
ado.CommandText = command;
var records = ado.Execute;
и при циклическом просмотре набора записей:
while (!records.Eof){
...
records.MoveNext();
}
Затем я пытаюсь получить canonicalName:
var cn = records.Fields('canonicalName').Value;
Проблема в том, что JavaScript не интерпретирует cn как строку или как массив ... если вы посмотрите на схему AD для canonicalName, вы увидите, что она настроена с помощью isSingleValue = false, что, как я считаю, вызывая проблему ...
При пошаговом выполнении кода в Visual Studio я могу углубиться в строковое значение, и QuickWatch показывает cn.value (0) как возвращающее строковое значение. Но когда я набираю это, это не работает ...
Я попробовал обычные способы получить значение без удачи:
for (var i in cn) { alert(cn[i]); }
и
for (i = 0; i < cn.length; i++) { alert(cn[i]); }
Ни то, ни другое не работает ...
Как я могу прочитать значение этого объекта?