none
VBS Как организовать перебор? RRS feed

  • Общие обсуждения

  • Подскажите.
    Есть задача: Необходимо пользователям в определенной оушке прописать в поле "pager" табельные номера. Есть скрипт
    strObjectDN = "cn=Василий Иванов,ou=Users,dc=domain,dc=lan"
    set objUser = GetObject("LDAP://" & strObjectDN)
    objUser.Put "pager", "555"
    objUser.SetInfoghbdtn



    Как сделать чтобы он брал из файла имя пользователя, искал его в оушке  и присваивал ему соответствующий табельный номера?




    17 октября 2007 г. 17:23

Все ответы

  • У меня есть похожее задание которое я не могу доделать ни как, может тут ближе для кого-то будет

    берём данные из домена и помещаем их в массив

    Тут я поместил в файл данные тех кто уже имеет табельный номер и так же сразу запихал их в массив

    Образец кода

    Option Explicit
    Const ADS_SCOPE_SUBTREE = 2
    Const ForReading = 1, ForWriting = 2, ForAppending = 8
    Const OverwriteTrue = True, OverwriteFalse = False, UnicodeTrue = True, UnicodeFalse = False
    Const ReadOnlyDeletionTrue = True, ReadOnlyDeletionFalse = False
    Dim filename, strDomain, objConnection, objCommand, objRecordSet, fso, file
    Dim strTabNom, strsn, strgivenName, strcompany, strdepartment, strtitle
    Dim fileArray(5, 1000), a, b, c, d, e, f, ver

    filename = "c:\testfile.txt"
    strDomain = "dc=domain,dc=local"

    Set objConnection = CreateObject("ADODB.Connection")
    Set objCommand =   CreateObject("ADODB.Command")
    objConnection.Provider = "ADsDSOObject"
    objConnection.Open "Active Directory Provider"

    Set objCommand.ActiveConnection = objConnection
    objCommand.CommandText = "Select pager, sn, givenName, company, department, title from 'LDAP://" & strDomain & "' " & "Where objectCategory='user' order by pager"
    objCommand.Properties("Page Size") = 1000
    objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE
    Set objRecordSet = objCommand.Execute

    Set fso = WScript.CreateObject("Scripting.FilesystemObject")
    Set file = fso.CreateTextFile(filename, OverwriteTrue, UnicodeFalse)


    objRecordSet.MoveFirst

    ver = 0

    Do Until objRecordSet.EOF
     
     strTabNom = objRecordSet.Fields("pager").Value
     strsn = objRecordSet.Fields("sn").Value
     strgivenName = objRecordSet.Fields("givenName").Value
     strcompany = objRecordSet.Fields("company").Value
     strdepartment = objRecordSet.Fields("department").Value
     strtitle = objRecordSet.Fields("title").Value

     If IsNull(strTabNom) Then
     else
     If IsNull(strsn) Then strsn = ""
     If IsNull(strgivenName) Then strgivenName = ""
     If IsNull(strcompany) Then strcompany = ""
     If IsNull(strdepartment) Then strdepartment = ""
     If IsNull(strtitle) Then strtitle = ""
     
     file.WriteLine _
      strTabNom & "|" & _
      strsn & "|" & _
      strgivenName & "|" & _
      strcompany & "|" & _
      strdepartment & "|" & _
      strtitle
     a = strTabNom
     b = strsn
     c = strgivenName
     d = strcompany
     e = strdepartment
     f = strtitle
     fileArray(0, ver) = a
     fileArray(1, ver) = b
     fileArray(2, ver) = c
     fileArray(3, ver) = d
     fileArray(4, ver) = e
     fileArray(5, ver) = f

     End If
     objRecordSet.MoveNext

    ver = ver+1 

    Loop

     

     

    А вот теперь как раз то что нужно сделать

    Сравнить данные и если они не сходятся сделать что-либо (там уже не важно)

     

    Как я думаю

     

    1 - Из файла такого же вида, нужно получить массив

    2 - Далее сравнивать их по определённому уникальному полю, пусть будет фамилия, хотя для моего предприятия даже это не подойдёт, есть не то что однофамильцы, но и одноимёнцы-отчественники, хорошо хоть работают в разных отделах

     

    Взять данные из excel это одна задача и она в принципе легко решаема

    а вот из текстового документа с разделителями, не могу, знаний не хватает

     

    Ну а про сравнение двух массивов вообще молчу

     

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

    18 октября 2007 г. 3:14
  • Тихо сам с собою я веду беседу

    одну часть запобедил

    добавление текстового файла в массив

     

    Образец кода

    Set fso = WScript.CreateObject("Scripting.FilesystemObject")
    Set file2 = fso.OpenTextFile(filename2, ForReading)
    var = 0
    Do Until file2.AtEndOfStream
     str1 = file2.ReadLine
     str2 = Split(str1, "|")
     fileArray2(0, var) = CLng(str2(0))
     fileArray2(1, var) = CStr(str2(1))
     fileArray2(2, var) = CStr(str2(2))
     fileArray2(3, var) = CStr(str2(3))
     fileArray2(4, var) = CStr(str2(4))
     fileArray2(5, var) = CStr(str2(5))
    var = var + 1
    Loop

     

     

    если нужны разъяснения, пишите
    21 октября 2007 г. 21:08