<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; JS: Получение списка почтовых ящиков из AD]]></title>
	<link rel="self" href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=7660&amp;type=atom" />
	<updated>2012-10-15T10:57:45Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=7660</id>
		<entry>
			<title type="html"><![CDATA[Re: JS: Получение списка почтовых ящиков из AD]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=64768#p64768" />
			<content type="html"><![CDATA[<p>Дополнил скрипт. Добавил поддержку PublicFolder.</p>]]></content>
			<author>
				<name><![CDATA[Aaroniero]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=25222</uri>
			</author>
			<updated>2012-10-15T10:57:45Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=64768#p64768</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: JS: Получение списка почтовых ящиков из AD]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=64506#p64506" />
			<content type="html"><![CDATA[<p>Большое спасибо. Задача решена. Вот получившийся скрипт.</p><div class="codebox"><pre><code>var arrSMTPAddr = new Array();		// Массив для хранения адресов
var arrContainer = new Array();		// Массив для хранения контейнеров
var arrUserAdsPath = new Array();	// Массив для хранения полного пути к объекту пользователя
var intCountArrUserAdsPath = -1;
var intCountArrContainer = 0;
var intCountArrContainerREAD = 0;
arrContainer[intCountArrContainerREAD] = &quot;LDAP://DC=mydomain,DC=local&quot;; // Путь до верхнего каталога в AD  
var FileName = &quot;relay_recipients.txt&quot;; // Файл для сохранения результата

// Выкидываем все дубликаты почтовых ящиков и то что ими не является
function ClearArray()
{
	arrSMTPAddr.sort();
	var arrTmp = new Array();
	var last=&quot;&quot;;
	for (i=0;i&lt;arrSMTPAddr.length;i++) {
		if ( arrSMTPAddr[i].match(/^[\w-.]+@[\w-.]+$/) &amp;&amp; last != arrSMTPAddr[i] ) {
			last = arrSMTPAddr[i];
			arrTmp.push(last);
		}
	}
	arrSMTPAddr = arrTmp;
}

// Записываем адреса из массива в файл
function WriteProxyAddrToFile()
{
	var fso = new ActiveXObject(&quot;scripting.filesystemobject&quot;);
	var f = fso.CreateTextFile(FileName,true);
	for (i=0;i&lt;arrSMTPAddr.length;i++)
		f.WriteLine(arrSMTPAddr[i]);
	f.Close();
}

// Получаем адрес пользователя и записываем в массив
function SMTPAdresses(Path)
{
	var ObjectName = GetObject(Path);
	if (ObjectName.proxyAddresses  != undefined){
		var y = (ObjectName.proxyAddresses.toArray ?  ObjectName.proxyAddresses.toArray().toString() : ObjectName.proxyAddresses).toLowerCase().replace(/smtp:/g,&quot;&quot;);
		arrSMTPAddr = arrSMTPAddr.concat(y.split(&quot;,&quot;));
	}
	if (ObjectName.mail != undefined){
		var y = ObjectName.mail.toLowerCase();
		arrSMTPAddr.push(y);
	}
}

// Получаем пути на всех юзеров из AD и записываем их в массив
function GetADsPath()
{
	do
	{
		var Directory = GetObject(arrContainer[intCountArrContainerREAD]);
		var e=new Enumerator(Directory);
		for (;!e.atEnd();e.moveNext())
		{
			var Object=e.item();
			if ((/user|group|publicfolder/gi).test(Object.Class))
			{
				intCountArrUserAdsPath += 1;
				arrUserAdsPath[intCountArrUserAdsPath] = Object.AdsPath;
			}
			else if ((/container|organizationalUnit/gi).test(Object.Class))
			{
				intCountArrContainer += 1;
				arrContainer[intCountArrContainer] = Object.AdsPath;
			}
		}
		intCountArrContainerREAD += 1;
	} while (intCountArrContainerREAD &lt;= intCountArrContainer);
}
 
function main()
{
	// Получаем пути на всех юзеров и записываем их в массив
	GetADsPath();
	
	for(i=0;i&lt;arrUserAdsPath.length;i++)
		SMTPAdresses(arrUserAdsPath[i]);
	
	// Вычищаем массив от дубликатов и некорректных записей
	ClearArray();
	
	// Записываем адреса из массива в файл 
	// WriteProxyAddrToFile(); 
}
 
main();</code></pre></div>]]></content>
			<author>
				<name><![CDATA[Aaroniero]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=25222</uri>
			</author>
			<updated>2012-10-03T10:05:21Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=64506#p64506</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: JS: Получение списка почтовых ящиков из AD]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=64485#p64485" />
			<content type="html"><![CDATA[<p>поправьте, если нужен и обычный атрибут mail</p><div class="codebox"><pre><code>function SMTPAdresses(Path) // &#039; Записываем  адреса в массив ArrSMTPAddr(intCountArrSMTPAddr)
{

    var ObjectName = GetObject(Path);
    var x;
    if (ObjectName.proxyAddresses  != undefined)
        x=Path  + &quot; =&gt; &quot; + (ObjectName.proxyAddresses.toArray ?  ObjectName.proxyAddresses.toArray().toString() : ObjectName.proxyAddresses);
    if (ObjectName.mail != undefined)
        x = (x ? x : Path) + &quot; =&gt; &quot; + ObjectName.mail;
    if (x) WScript.Echo(x);
}</code></pre></div>]]></content>
			<author>
				<name><![CDATA[smaharbA]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=2911</uri>
			</author>
			<updated>2012-10-02T16:13:50Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=64485#p64485</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: JS: Получение списка почтовых ящиков из AD]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=64483#p64483" />
			<content type="html"><![CDATA[<p>im2002 - этот атрибут виден только при наличие ексченжа, иначе его надо разрешить и редактировать в адсиедите</p><p>http://technet.microsoft.com/ru-ru/library/cc720282%28v=ws.10%29.aspx</p>]]></content>
			<author>
				<name><![CDATA[smaharbA]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=2911</uri>
			</author>
			<updated>2012-10-02T16:03:43Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=64483#p64483</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: JS: Получение списка почтовых ящиков из AD]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=64482#p64482" />
			<content type="html"><![CDATA[<p>код довольно таки мягко говоря странен (не нужна там псевдорекурсия), но лениво писать, тупо переделан вбс-ный код тут:<br /></p><div class="codebox"><pre><code>var ArrSMTPAddr=new Array();// &#039; динамич массив для хранения proxyAddresses
var intCountArrSMTPAddr = -1;
var arrContainer=new Array();// &#039; массив для хранения контейнеров
var arrUserAdsPath=new Array();// &#039; массив для хранения полного пути к объекту пользователя
var intCountArrUserAdsPath = -1;
var intCountArrContainer = 0;
var intCountArrContainerREAD = 0;
arrContainer[intCountArrContainerREAD] = &quot;LDAP://DC=n-d,DC=ru&quot;;// &#039; путь до верхнего каталога в AD  
var FileName = &quot;relay_recipients&quot;;


function SMTPAdresses(Path) // &#039; Записываем  адреса в массив ArrSMTPAddr(intCountArrSMTPAddr)
{

	var ObjectName = GetObject(Path);
	var x;
	if (ObjectName.proxyAddresses  != undefined)
		x=Path  + &quot; =&gt; &quot; + (ObjectName.proxyAddresses.toArray ?  ObjectName.proxyAddresses.toArray().toString() : ObjectName.proxyAddresses);
	if (ObjectName.mail != undefined)
		x = (x ? x : Path) + &quot; =&gt; &quot; + ObjectName.mail;
	if (x) WScript.Echo(x);
}

function GetADsPath() //&#039;получаем пути на всех юзеров и записываем их в массив
{
	do
	{
		var Directory = GetObject(arrContainer[intCountArrContainerREAD]);
		var e=new Enumerator(Directory);
		for (;!e.atEnd();e.moveNext())
		{
			var Object=e.item();
			if ((/user|group/gi).test(Object.Class))
			{
				intCountArrUserAdsPath = intCountArrUserAdsPath + 1;
				arrUserAdsPath[intCountArrUserAdsPath] = Object.AdsPath;
			}
			else if ((/container|organizationalUnit/gi).test(Object.Class))
			{
				intCountArrContainer = intCountArrContainer + 1;
				arrContainer[intCountArrContainer] = Object.AdsPath;
			}
		}
		intCountArrContainerREAD = intCountArrContainerREAD + 1;
	} while (intCountArrContainerREAD &lt; intCountArrContainer);
}

function main()
{
	GetADsPath();// &#039;получаем пути на всех юзеров и записываем их в массив

	for(i=0;i&lt;arrUserAdsPath.length;i++)
		SMTPAdresses(arrUserAdsPath[i])
		//WriteProxyAddrToFile(); &#039;записываем адреса из массива в файл 
}

main();</code></pre></div>]]></content>
			<author>
				<name><![CDATA[smaharbA]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=2911</uri>
			</author>
			<updated>2012-10-02T16:01:31Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=64482#p64482</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: JS: Получение списка почтовых ящиков из AD]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=64480#p64480" />
			<content type="html"><![CDATA[<p>хотел посмотреть, что за такие &quot;почтовые ящики пользователей&quot; выводит скрипт.<br />в строках:<br /></p><div class="codebox"><pre><code>&#039; введите свои данные
arrContainer(intCountArrContainerREAD) = &quot;LDAP://DC=mydomain,DC=local&quot; &#039; путь до верхнего каталога в AD  
&#039;файл куда адреса записывать
FileName = &quot;relay_recipients&quot;</code></pre></div><p>определил свой домен, файл для вывода и переопределял (типа D:\relay_recipients.txt) и оставлял как выше - все одно - не могу найти после отработки скрипта нигде этого &quot;relay_recipients&quot;???<br />скрипт запускал bat-файлом:<br /></p><div class="codebox"><pre><code>C:\WINDOWS\system32\cscript.exe &quot;D:\SCRIPTS\ADSI\AllAddr.vbs&quot;
pause</code></pre></div><p>где AllAddr.vbs - скопированный код, pause - чтобы видеть, что что-то работало. В окне интерпритатора видно, что скрипт &quot;работал&quot;, но файла никакого нету.<br />Где этот адрес почтового ящика в AD находиться? Закладка &quot;Общие&quot; поле &quot;Эл. почта:&quot; там что ли?</p>]]></content>
			<author>
				<name><![CDATA[im2002]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=28063</uri>
			</author>
			<updated>2012-10-02T15:09:13Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=64480#p64480</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[JS: Получение списка почтовых ящиков из AD]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=64471#p64471" />
			<content type="html"><![CDATA[<p>Добрый день.<br />Стоит задача выгрузить из AD список почтовых ящиков пользователей и групп для совершения с ними дальнейших действий. Я нашел рабочий пример на VBScript</p><div class="codebox"><pre><code>&#039; Программа выводит все proxyAddresses из всего дерева каталогов AD и записывает
&#039; в файл FileName = &quot;relay_recipients&quot; - осторожно, файл перезаписывается каждый раз.
&#039; запускайте из командной строки (не из FAR) командой: cscript AllAddr.vbs
&#039; укажите свой путь до верхнего каталога в AD 
&#039; Для запуска достаточно прав обычного пользователя.
&#039; Скрипт работает под 2000,XP,2003



Option Explicit


Dim ArrSMTPAddr() &#039; динамич массив для хранения proxyAddresses
Dim intCountArrSMTPAddr  &#039;cчетчик для динамич массив для хранения proxyAddresses
intCountArrSMTPAddr = -1
Dim FileName
Dim RelativePathFromDomainToUserContainer 
Dim arrContainer() &#039; массив для хранения контейнеров
Dim intCountArrContainer &#039; счетчик для ЗАПОЛНЕНИЯ массива хранения контейнеров
Dim intCountArrContainerREAD &#039; счетчик для СЧИТЫВАНИЯ массива хранения контейнеров
Dim arrUserAdsPath() &#039; массив для хранения полного пути к объекту пользователя
Dim intCountArrUserAdsPath &#039; счетчик для массива хранения контейнеров пользователей
Dim intCountArrUserAdsPathREAD &#039; счетчик для cчитывания массива хранения контейнеров 
intCountArrUserAdsPath = -1
intCountArrContainer = 0
intCountArrContainerREAD = 0
ReDim Preserve arrContainer(intCountArrContainerREAD) &#039;увеличиваем размер массива



&#039; введите свои данные
arrContainer(intCountArrContainerREAD) = &quot;LDAP://DC=mydomain,DC=local&quot; &#039; путь до верхнего каталога в AD  
&#039;файл куда адреса записывать
FileName = &quot;relay_recipients&quot; 

&#039; далее не нужно ничего вводить


&#039;On Error Resume Next

Function ReplaceTest(str1, patrn, replStr) &#039; приводим SMTP адрес к нормальному виду
  Dim regEx, retVal              &#039; Create variables.
  Set regEx = New RegExp            &#039; Create regular expression.
  regEx.Pattern = patrn            &#039; Set pattern.
  regEx.IgnoreCase = True            &#039; Make case insensitive.
  retVal = regEx.Test(str1)      &#039; Execute the search test.
  If retVal Then
     ReplaceTest = regEx.Replace(str1, replStr)   &#039; Make replacement.
  Else
     ReplaceTest = Null
  End If
  Set retVal = Nothing
End Function

Sub WriteProxyAddrToFile() &#039;записываем адреса из массива в файл 

    Dim f, fs, temp
WScript.Echo &quot;  Now we are saving this array to file &quot;
    Set fs = CreateObject(&quot;Scripting.FileSystemObject&quot;)
    Set f = fs.CreateTextFile(FileName) 
       &#039;  f.Write &quot;New once &quot; &amp; Date &amp; &quot;  &quot; &amp; Time
       For Each temp In ArrSMTPAddr
      f.Write temp &amp; &quot; OK&quot;        
          f.Write Chr(13)    
          f.Write Chr(10)
       Next



End Sub


Sub SMTPAdresses(Path) &#039; Записываем  адреса в массив ArrSMTPAddr(intCountArrSMTPAddr)

Dim address
Dim ObjectName
Dim strTemp

  Set ObjectName = GetObject(Path)
&#039;  WScript.Echo &quot;ObjectName: &quot; &amp; ObjectName.Name 
&#039;  WScript.Echo &quot;ObjectClass: &quot; &amp; ObjectName.Class 
&#039;  WScript.Echo &quot;ObjectName.proxyAddresses: Type =&quot; &amp; TypeName(ObjectName.proxyAddresses)

  If TypeName(ObjectName.proxyAddresses) = &quot;String&quot; Then

&#039;       WScript.Echo &quot;ObjectName.proxyAddresses: &quot; &amp; ReplaceTest(ObjectName.proxyAddresses,&quot;smtp:&quot;, &quot;&quot;)
      intCountArrSMTPAddr = intCountArrSMTPAddr + 1  &#039; инкрементируем размер счетчика
      ReDim Preserve ArrSMTPAddr(intCountArrSMTPAddr) &#039;увеличиваем размер массива
      ArrSMTPAddr(intCountArrSMTPAddr) = ReplaceTest(ObjectName.proxyAddresses,&quot;smtp:&quot;,&quot;&quot;)
     WScript.Echo &quot;ArrSMTPAddr(&quot; &amp; intCountArrSMTPAddr &amp; &quot;)&quot; &amp; ArrSMTPAddr(intCountArrSMTPAddr)        
&#039; WScript.Echo &quot;intCountArrSMTPAddr &quot; &amp; intCountArrSMTPAddr

  ElseIf TypeName(ObjectName.proxyAddresses) = &quot;Variant()&quot; Then

     For Each address In ObjectName.proxyAddresses
    strTemp = ReplaceTest(address,&quot;smtp:&quot;, &quot;&quot;)    
    If NOT strTemp = &quot;&quot; Then      &#039; если функция ReplaceTest возвращает пустое значение
&#039;          WScript.Echo &quot;strTemp             :&quot; &amp; strTemp
          intCountArrSMTPAddr = intCountArrSMTPAddr + 1  &#039; инкрементируем размер счетчика
          ReDim Preserve ArrSMTPAddr(intCountArrSMTPAddr) &#039;увеличиваем размер массива
          ArrSMTPAddr(intCountArrSMTPAddr) = strTemp
     WScript.Echo &quot;ArrSMTPAddr(&quot; &amp; intCountArrSMTPAddr &amp; &quot;)&quot; &amp; ArrSMTPAddr(intCountArrSMTPAddr)        
&#039;       WScript.Echo &quot;intCountArrSMTPAddr &quot; &amp; intCountArrSMTPAddr

    End If

     Next

  ElseIf TypeName(ObjectName.proxyAddresses) = &quot;Empty&quot; Then
    &#039;
  Else
       WScript.Echo &quot; Error!!! Programm can not understand type of variable ObjectName.proxyAddresses&quot;
  End If
  Set ObjectName = Nothing

End Sub

Sub GetADsPath() &#039;получаем пути на всех юзеров и записываем их в массив

Dim Directory, Object

Do
WScript.Echo arrContainer(intCountArrContainerREAD)
 Set Directory = GetObject(arrContainer(intCountArrContainerREAD))

 For Each Object In Directory
 
  If Object.Class = &quot;user&quot; Then
     intCountArrUserAdsPath = intCountArrUserAdsPath + 1
     ReDim Preserve arrUserAdsPath(intCountArrUserAdsPath) &#039;увеличиваем размер массива
     arrUserAdsPath(intCountArrUserAdsPath) = Object.AdsPath
     WScript.Echo &quot;Object.Class user: &quot; &amp; arrUserAdsPath(intCountArrUserAdsPath)
  ElseIf Object.Class = &quot;group&quot; Then
     intCountArrUserAdsPath = intCountArrUserAdsPath + 1
     ReDim Preserve arrUserAdsPath(intCountArrUserAdsPath) &#039;увеличиваем размер массива
     arrUserAdsPath(intCountArrUserAdsPath) = Object.AdsPath
     WScript.Echo &quot;Object.Class group: &quot; &amp; arrUserAdsPath(intCountArrUserAdsPath)
  ElseIf Object.Class = &quot;container&quot; Then
     intCountArrContainer = intCountArrContainer + 1
     ReDim Preserve arrContainer(intCountArrContainer) &#039;увеличиваем размер массива
     arrContainer(intCountArrContainer) = Object.AdsPath
     WScript.Echo &quot;Object.Class container: &quot; &amp; Object.Class
  ElseIf Object.Class = &quot;organizationalUnit&quot; Then
     intCountArrContainer = intCountArrContainer + 1
     ReDim Preserve arrContainer(intCountArrContainer) &#039;увеличиваем размер массива
     arrContainer(intCountArrContainer) = Object.AdsPath
     WScript.Echo &quot;Object.Class OU: &quot; &amp; Object.Class
  End If

 Next
 intCountArrContainerREAD = intCountArrContainerREAD + 1
 Set  Directory = Nothing
Loop While intCountArrContainerREAD &lt; intCountArrContainer

End Sub


Sub main()

Dim Object

GetADsPath() &#039;получаем пути на всех юзеров и записываем их в массив

&#039;цикл для работы с пользователями Записываем  адреса в массив ArrSMTPAddr(intCountArrSMTPAddr)
For Each Object In arrUserAdsPath
   
     WScript.Echo &quot;Object: &quot; &amp; Object
     SMTPAdresses(Object)

Next

&#039;WriteProxyAddrToFile() &#039;записываем адреса из массива в файл 

End Sub

main()</code></pre></div><p>и пытаюсь переписать его на JScript. Получился следующий код:</p><div class="codebox"><pre><code>var arrSMTPAddr = new Array();        // динамич массив для хранения proxyAddresses
var intCountarrSMTPAddr;            // cчетчик для динамич массив для хранения proxyAddresses
var intCountarrSMTPAddr = -1;        //
var RelativePathFromDomainToUserContainer;
var arrContainer = new Array();        // массив для хранения контейнеров
var intCountArrContainer;            // счетчик для ЗАПОЛНЕНИЯ массива хранения контейнеров
var intCountArrContainerREAD;        // счетчик для СЧИТЫВАНИЯ массива хранения контейнеров
var arrUserAdsPath = new Array();    // массив для хранения полного пути к объекту пользователя
var intCountArrUserAdsPath;         // счетчик для массива хранения контейнеров пользователей
var intCountArrUserAdsPathREAD;        // счетчик для cчитывания массива хранения контейнеров 
var intCountArrUserAdsPath = -1;
var intCountArrContainer = 0;
var intCountArrContainerREAD = 0;

// Путь до верхнего каталога в AD  
arrContainer[intCountArrContainerREAD] = &quot;LDAP://DC=mydomain,DC=local&quot;; 

function debug (s){
    //WScript.Echo(s);
}

// Получаем SMTP адреса для объекта в AD
function SMTPAdresses(Path) {
    var ObjectName = GetObject(Path);
    debug( &quot;ObjectName: &quot; + ObjectName.Name );
    debug( &quot;ObjectClass: &quot; + ObjectName.Class );
    debug( &quot;ObjectName.proxyAddresses: Type = &quot; + typeof ObjectName.proxyAddresses );
    
    switch (typeof ObjectName.proxyAddresses){
        case &quot;string&quot;:
            var strTemp = ObjectName.proxyAddresses.replace(&quot;smtp:&quot;, &quot;&quot;);
            debug( &quot;ObjectName.proxyAddresses: &quot; + strTemp );
            intCountarrSMTPAddr += 1;
            arrSMTPAddr[intCountarrSMTPAddr] = strTemp;
            debug( &quot;arrSMTPAddr(&quot; + intCountarrSMTPAddr + &quot;)&quot; + arrSMTPAddr[intCountarrSMTPAddr]);
            debug( &quot;intCountarrSMTPAddr &quot; + intCountarrSMTPAddr);
            break;
        case &quot;undefined&quot;:
            for ( var address in ObjectName.proxyAddresses ){
                var strTemp = address.replace(&quot;smtp:&quot;, &quot;&quot;);
                if ( strTemp != &quot;&quot; ){
                    WScript.Echo( &quot;strTemp             :&quot; + strTemp);
                    intCountarrSMTPAddr += 1;
                    arrSMTPAddr[intCountarrSMTPAddr] = strTemp;
                    WScript.Echo( &quot;arrSMTPAddr(&quot; + intCountarrSMTPAddr + &quot;)&quot; + arrSMTPAddr[intCountarrSMTPAddr]);        
                    WScript.Echo( &quot;intCountarrSMTPAddr &quot; + intCountarrSMTPAddr );
                }
            }    
            break;
        case &quot;unknown&quot;:
            break;
          default:
           WScript.Echo(&quot; Error!!! Programm can not understand type of variable ObjectName.proxyAddresses&quot;);
           WScript.Quit();
           break;
      }
}

// получаем пути на всех юзеров и записываем их в массив
function GetADsPath(){
    do {
        var Directory = GetObject(arrContainer[intCountArrContainerREAD]);

        var e = new Enumerator(Directory);
        for(; !e.atEnd(); e.moveNext() ) {
            var Object = e.item();
    
              switch (Object.Class) {
                case &quot;user&quot;:
                    intCountArrUserAdsPath += 1;
                    arrUserAdsPath[intCountArrUserAdsPath] = Object.AdsPath;
                    debug( &quot;Object.Class user: &quot; + arrUserAdsPath[intCountArrUserAdsPath] );
                    break;
                case &quot;group&quot;:
                    intCountArrUserAdsPath += 1;
                    arrUserAdsPath[intCountArrUserAdsPath] = Object.AdsPath;
                    debug( &quot;Object.Class group: &quot; + arrUserAdsPath[intCountArrUserAdsPath] );
                    break;
                case &quot;container&quot;:
                    intCountArrContainer += 1;
                    arrContainer[intCountArrContainer] = Object.AdsPath;
                    debug( &quot;Object.Class container: &quot; + Object.Class );
                    break;
                case &quot;organizationalUnit&quot;:
                    intCountArrContainer += 1;
                    arrContainer[intCountArrContainer] = Object.AdsPath;
                    debug( &quot;Object.Class OU: &quot; + Object.Class );
                    break;
              }
        }
         intCountArrContainerREAD += 1;
    } while ( intCountArrContainerREAD &lt; intCountArrContainer );
}

function main() {
    // получаем пути на всех юзеров и записываем их в массив
    GetADsPath();
    
    // цикл для работы с пользователями Записываем  адреса в массив arrSMTPAddr(intCountarrSMTPAddr)
    for ( var Object in arrUserAdsPath ) {
        debug( &quot;Object: &quot; + arrUserAdsPath[Object] );
        SMTPAdresses(arrUserAdsPath[Object]);
    }
    
    for ( var Object in arrSMTPAddr ) {
        WScript.Echo(Object + &quot;: &quot; + arrSMTPAddr[Object] );
    }
}

main();</code></pre></div><p>Проблема возникла в переписывании случая</p><div class="codebox"><pre><code>ElseIf TypeName(ObjectName.proxyAddresses) = &quot;Variant()&quot; Then

     For Each address In ObjectName.proxyAddresses
    strTemp = ReplaceTest(address,&quot;smtp:&quot;, &quot;&quot;)    
    If NOT strTemp = &quot;&quot; Then      &#039; если функция ReplaceTest возвращает пустое значение
&#039;          WScript.Echo &quot;strTemp             :&quot; &amp; strTemp
          intCountArrSMTPAddr = intCountArrSMTPAddr + 1  &#039; инкрементируем размер счетчика
          ReDim Preserve ArrSMTPAddr(intCountArrSMTPAddr) &#039;увеличиваем размер массива
          ArrSMTPAddr(intCountArrSMTPAddr) = strTemp
     WScript.Echo &quot;ArrSMTPAddr(&quot; &amp; intCountArrSMTPAddr &amp; &quot;)&quot; &amp; ArrSMTPAddr(intCountArrSMTPAddr)        
&#039;       WScript.Echo &quot;intCountArrSMTPAddr &quot; &amp; intCountArrSMTPAddr

    End If</code></pre></div><p>Если я правильно понял, то в VBScript&#039;e этот случай соответствует работе с массивом. Но в JScript&#039;е функция typeof ObjectName.proxyAddresses в данном случае выдаст &quot;unknown&quot; и не понятно, что с эти делать. Помогите, пожалуйста, разобраться. Хочется получить либо совет, как переписать данный блок на JScript, либо рабочий пример получения списка ящиков пользователей из AD на JS.</p>]]></content>
			<author>
				<name><![CDATA[Aaroniero]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=25222</uri>
			</author>
			<updated>2012-10-02T13:08:00Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=64471#p64471</id>
		</entry>
</feed>
