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
|