'--------------------------------------------------------- ' Перед запуском скрипта необходимо заменить переменные: ' DomainName - имя домена; ' BS - путь к файлу Business Studio; ' Server - имя сервера; ' DB - имя базы; ' Dir - каталог экспорта-импорта. '--------------------------------------------------------- '---- настройки ------ DomainName="DC=MyDomain,DC=Local" 'имя домена ObjFilter="user" 'фильтр по типам объектов ''' доп. фильтр по именам объектов (регулярные выражения): 'NameFilter=".+" 'любое, кроме пустого 'NameFilter="^[^a-z0-9]+$" 'не содержащее английскийх букв и цифр 'NameFilter="^\W+ \W+ \W+$" 'строго 3 слова, разделенные пробелом, не содержащие английских букв, цифр и знака подчеркивания NameFilter="^\W+ \W+( \W+|)$" 'то же, но 2 или 3 слова 'по регулярным выражениям см. http://msdn2.microsoft.com/en-us/library/ms974570.aspx BS="C:\Program Files\STU-Soft\Business Studio 2.0\Business Studio.exe" 'путь к файлу Business Studio Server="MyServer" 'имя сервера DB="MyBase" 'имя базы Dir="C:\AD" 'каталог экспорта-импорта '--------------------- File = "Users.xls" 'файл экспорта-импорта fn = Dir + "\" + File set Excel = CreateObject("Excel.Application") Excel.Visible = true 'видимость Excel set xlWorkBook = Excel.Workbooks.Add 'новая книга if xlWorkBook.Sheets.Count < 1 then xlWorkBook.Sheets.Add() set xlSheet = Excel.ActiveWorkbook.Worksheets(1) xlSheet.Name = "AD Users" xlSheet.Cells(1, 1).Value = "Фамилия" xlSheet.Cells(1, 2).Value = "Имя" xlSheet.Cells(1, 3).Value = "Отчество" xlSheet.Cells(1, 4).Value = "E-mail" xlSheet.Cells(1, 5).Value = "Тип контакта" xlSheet.Range("A1:Z1").Font.Bold = True Excel.Columns(1).ColumnWidth = 30 Excel.Columns(2).ColumnWidth = 30 Excel.Columns(3).ColumnWidth = 30 Excel.Columns(4).ColumnWidth = 30 Excel.Columns(5).ColumnWidth = 30 xlLine=2 ExportUnit("CN=USERS,"&DomainName) 'экспорт из стандартного контейнера 'ExportUnit("OU=MyUsers,"&DomainName) 'экспорт из дополнительного контейнера set fso = CreateObject("Scripting.FileSystemObject") on error resume next fso.CreateFolder(Dir) fso.DeleteFile(fn) on error goto 0 Excel.ActiveWorkbook.SaveAs(Dir + "\" + File) 'сохранить файл Excel.ActiveWorkbook.Close 'закрыть книгу Excel.Application.Quit 'выйти из Excel '--- автоимпорт в базу --- set WshShell = CreateObject("WScript.Shell") WshShell.Exec(""""+BS+""" /server="+Server+" /db="+DB+" /runcmd=""БизнесМодель.КлиентскиеМетоды.Автоимпортер "+Dir+",Импорт физлиц из Active Directory,5000""") '====== конец =========== sub ExportUnit(UnitName) 'check set oTargetOU = GetObject("LDAP://"&UnitName) oTargetOU.Filter = Array(ObjFilter) set regEx = new RegExp regEx.Pattern = NameFilter regEx.IgnoreCase = True regEx.Global = false for each usr in oTargetOU uDisplayName = usr.DisplayName uAccountName = usr.SamAccountName uDisabled = (usr.UserAccountControl and 2)<>0 uEmail = usr.Mail set Matches = regEx.Execute(uDisplayName) ' фильтр по имени if ((Matches.Count > 0) and (not uDisabled)) then 'set match = Matches(0) 'for i = 0 to match.SubMatches.Count - 1 'xlSheet.Cells(xlLine, i + 1).Value = match.SubMatches(i) 'next a = Split(uDisplayName, " ") l = UBound(a) if (l >= 0) then xlSheet.Cells(xlLine, 1).Value = a(0) if (l >= 1) then xlSheet.Cells(xlLine, 2).Value = a(1) if (l >= 2) then xlSheet.Cells(xlLine, 3).Value = a(2) xlSheet.Cells(xlLine, 4).Value = uEmail xlSheet.Cells(xlLine, 5).Value = "Электронная почта" xlLine = xlLine + 1 end if next end sub