Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Нужен скрипт для прописания должности юзерам. (http://forum.oszone.net/showthread.php?t=146992)

dvassilyev 03-08-2009 16:35 1184481

Нужен скрипт для прописания должности юзерам.
 
Задачка такая, нужно каждому юзеру прописать должность и департамент
Эти должности записаны в xls файле.
Полный формат файла:
Имя, Фамилия, Должность, Департамент.
Нужно - сопоставляя First Name/ Last Name из АД с Имя/Фамимлия в xls файле - вставлять в поля AD: Title, Department - должность и департамент.

amel27 04-08-2009 08:45 1184940

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


dvassilyev 04-08-2009 08:56 1184945

Спасибо большое, буду тестировать.


Время: 12:45.

Время: 12:45.
© OSzone.net 2001-