VBS/WSH/JS - Нужен скрипт для прописания должности юзерам.

Ответить
Аватара пользователя
dvassilyev

VBS/WSH/JS - Нужен скрипт для прописания должности юзерам.

Сообщение dvassilyev »

Задачка такая, нужно каждому юзеру прописать должность и департамент

Эти должности записаны в xls файле.

Полный формат файла:

Имя, Фамилия, Должность, Департамент.

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

Re: VBS/WSH/JS - Нужен скрипт для прописания должности юзерам.

Сообщение amel27 »

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
Ответить

Вернуться в «Скриптовые языки администрирования Windows»