Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


1. считаем, что все объекты пользователей в одном контейнере (без субконтейнеров)
2. чтобы не заморачиваться с XLS, возьмем текстовый файл, разделенный запятыми (как указано)

Код: Выделить весь код
strIN = "users.txt"
strOU = "ou=Department,dc=MyDomain,dc=com"

' Загрузка файла в массив
arrFile = LoadFile (strIN, 4, ",")
' Подключаемся к контейнеру AD
Set objOU = GetObject("LDAP://" & strOU)
' Фильтруем пользователей
objOU.Filter = Array("User")

' Перебираем пользователей в контейнере
For Each objUser In objOU
   ' Ищем пользователя в массиве
   For intLine=0 To UBound(arrFile, 2) - 1
      If StrComp(objUser.givenName, arrFile(0, intLine), 1) = 0 Then
         If StrComp(objUser.sn, arrFile(1, intLine), 1) = 0 Then
            ' Задаем атрибуты
            objUser.Put "title", arrFile(2, intLine)
            objUser.Put "department", arrFile(3, intLine)
            ' Сохраняем изменения
            objUser.SetInfo
         End If
      End If
   Next
Next

Function LoadFile(strFile, intCols, chrDelim)
   Dim strLine, arrLine, arrFile(), intLine, iCol
   Dim objFSO, objFile, objReg

   Set objFSO = CreateObject("Scripting.FileSystemObject")
   Set objFile = objFSO.OpenTextFile(strFile, 1)

   Set objReg = CreateObject("VBScript.RegExp")
   objReg.Pattern = "^([^" & chrDelim & "]*,){" & intCols-1 & "}"

   Do While objFile.AtEndOfStream <> True
      strLine = objFile.ReadLine
      If objReg.Test(strLine) Then
         arrLine = Split(strLine, chrDelim)

         intLine = intLine + 1
         ReDim Preserve arrFile(intCols, intLine)

         For iCol=0 To intCols-1
            arrFile(iCol,intLine-1) = arrLine(iCol)
         Next
      End If
   Loop

   objFile.Close
   LoadFile = arrFile
End Function

Последний раз редактировалось amel27, 04-08-2009 в 09:05. Причина: оформление


Отправлено: 08:45, 04-08-2009 | #2