Данный скрипт создает Csv файл со списком пользователей вашего, а так же сохраняет адреса их электронной почты. Обязательно запускайте данный скрипт с правами администратора домена. Запускается он очень просто, скопируйте сам скрипт в файле с расширением vbs, например script.vbs и запустите из командной строки
START /WAIT CScript <path>\<filename>.vbs //NoLogo
Как пример:
START /WAIT CScript C:\script.vps //NoLogo
А вот собственно и сам скрипт, список вы получите в файле Roster_export.csv:
Option Explicit Dim StartTime,EndTime: StartTime = Now ' For seeing how long the script takes to run Dim objShell Dim objFSO Const ScriptVersion = "1.01" Set objShell = WScript.CreateObject("WScript.Shell") Set objFSO = CreateObject("Scripting.FileSystemObject") Wscript.Echo "StartTime = " & StartTime ' ***************************************************************** ' Const ForReading = 1, ForWriting = 2, ForAppending = 8 Dim objRootDSE Dim objDomain Dim objContainer Dim objOrganizationalUnit Dim strOutputFileName, objOutputFileName, GarbageRC Dim intUserObjectCountAll, intUserObjectCountSelected strOutputFileName = "Roster_export.csv" Set objOutputFileName = objFSO.OpenTextFile(strOutputFileName, ForWriting, True) intUserObjectCountAll = 0 intUserObjectCountSelected = 0 Set objRootDSE = GetObject("LDAP://RootDSE") Set objDomain = GetObject("LDAP://" & objRootDSE.Get("DefaultNamingContext")) Call Sub_EnumOUs(objDomain.ADsPath) Sub Sub_EnumOUs(sADsPath) Set objContainer = GetObject(sADsPath) objContainer.Filter = Array("OrganizationalUnit") For Each objOrganizationalUnit in objContainer WScript.Echo "Checking OU: " & objOrganizationalUnit.ADsPath Wscript.Echo " User Object Count: " & intUserObjectCountAll Sub_EnumUsers(objOrganizationalUnit.ADsPath) Sub_EnumOUs(objOrganizationalUnit.ADsPath) Next End Sub Sub Sub_EnumUsers(sADsPath) Dim objADobject Set objContainer = GetObject(sADsPath) objContainer.Filter = Array("User") For Each objADobject in objContainer If objADobject.Class = "user" Then intUserObjectCountAll = intUserObjectCountAll + 1 If objADobject.Mail <> "" Then objOutputFileName.Writeline(Chr(34) & objADobject.displayName & Chr(34) & "," & objADobject.Mail) intUserObjectCountSelected = intUserObjectCountSelected + 1 End If End If Next End Sub objOutputFileName.Close ' ***************************************************************** ' EndTime = Now Wscript.Echo vbCrLf & "EndTime = " & EndTime Wscript.Echo "Seconds Elapsed: " & DateDiff("s", StartTime, EndTime) Wscript.Echo "Script Complete" Wscript.Quit(0)
Update: Мною был написан небольшой портал на php для выгрузки данных пользователей, более подробно ТУТ