none
Заведение учетных записей из списка + пропуск ошибок RRS feed

  • Вопрос

  • Уважаемые мне опять нужен Ваш совет. Вот есть скрипт по импорту пользователей из таблице Excel в AD.

     


    Образец кода

    Option Explicit
    Dim objRootLDAP, objContainer, objUser, objShell
    Dim objExcel, objSpread, intRow
    Dim strUser, strOU, strSheet, strDepar
    Dim strCN, strSam, strdis, strGname, strUPN, strSN, StrIn, strTitle, strTelephone, strSDN

    strOU = "OU=temp ," ' Note the comma
    strSheet = "F:\AD users\!!!\acc.xls"
    Set objRootLDAP = GetObject("LDAP://rootDSE")
    Set objContainer = GetObject("LDAP://" & strOU & _
    objRootLDAP.Get("defaultNamingContext"))
    Set objExcel = CreateObject("Excel.Application")
    Set objSpread = objExcel.Workbooks.Open(strSheet)
    intRow = 3 'Row 1 often contains headings
    Do Until objExcel.Cells(intRow,1).Value = ""
       strSam = Trim(objExcel.Cells(intRow, 2).Value)
       strCN = Trim(objExcel.Cells(intRow, 1).Value)
       strDis = Trim(objExcel.Cells(intRow, 3).Value)
       strGname = Trim(objExcel.Cells(intRow, 4).Value)
       strUPN = Trim(objExcel.Cells(intRow, 5).Value)
       strSN = Trim(objExcel.Cells(intRow, 6).Value)
       strIn = Trim(objExcel.Cells(intRow, 7).Value)
       strTitle = Trim(objExcel.Cells(intRow, 8).Value)
       strTelephone = Trim(objExcel.Cells(intRow, 9).Value)
       strDepar = Trim(objExcel.Cells(intRow, 10).Value)

       ' Build the actual User from data in strSheet.
       Set objUser = objContainer.Create("User", "cn=" & strCN)
       objUser.sAMAccountName = strSam
       objUser.DisplayName = strDis
       objUser.givenName = strGname
       objUser.userPrincipalName = strUPN 
       objUser.sn = strSN
       objUser.initials = strIn
       objUser.Title = strTitle
       objUser.telephoneNumber = strTelephone
       objUser.department = strDepar
       objUser.SetInfo

    intRow = intRow + 1
    Loop
    objExcel.Quit

    WScript.Quit

     

     

    Все работает все классно, но если встречаются уже существующие пользователи то он естественно ругается и закрывает процесс. Таких пользователей уже много, и по этому сейчас из списка 6000 не заведенных пользователей выбирать 150 заведенных тяжко.

     

    Как можно пропускать ошибки?

     

    И на будущее, дайте совет если понадобится завести такое количество учеток, таким способом, это нормально? 

     

    24 декабря 2007 г. 15:38

Ответы

  •  

    Ну так проверяй на "существование" :

    Образец кода

    Set oUserOU = GetObject ( "LDAP://ou=" & UserName & "," &  EmploeersContainer.distinguishedName )
    If Err <> 0 Then

        Err.Clear

        ' Создание пользователя

    Else

        WScript.Echo "User " & UserName & " may exists"

    End if

     

     

    24 декабря 2007 г. 15:46
  • Однофамильцы это фигня, у нас две Натальи Николаевны с одной фамилией

    пришлось вводить поле табельный номер и от него плясать

     

    а про лог файл тебе практически написали всё

    только цикл делай

     

    Образец кода

    Set FSO = CreateObject("Scripting.FileSystemObject")
    Set TF = FSO.CreateTextFile("C:\"log" "&Date()&".txt")
    TF.Writeline "--------log--------"

     

    'тут какие надо значения

    TF.WriteLine "User " & UserName & " may exists"


    TF.Writeline "--------END------"
    TF.Write vbCrLf
    TF.Close
    MsgBox ("Done !!!")

     

     

    24 декабря 2007 г. 23:52

Все ответы

  •  

    Ну так проверяй на "существование" :

    Образец кода

    Set oUserOU = GetObject ( "LDAP://ou=" & UserName & "," &  EmploeersContainer.distinguishedName )
    If Err <> 0 Then

        Err.Clear

        ' Создание пользователя

    Else

        WScript.Echo "User " & UserName & " may exists"

    End if

     

     

    24 декабря 2007 г. 15:46
  • ок Smile Спасибо. Получится типа этого?:

     

    Образец кода

    Set oUserOU = GetObject ( "LDAP://ou=" & UserName & "," &  EmploeersContainer.distinguishedName )
    If Err <> 0 Then

        Err.Clear

        ' Создание пользователя

    Else

    On Error Resume Next

    End if

     

     

    Вот еще а как сделать лог ошибок? Много однофамильцев, в таблице они уже найдены и подправлены, но это не выбраны кто из них уже заведен кто нет Smile

    24 декабря 2007 г. 16:22
  • Однофамильцы это фигня, у нас две Натальи Николаевны с одной фамилией

    пришлось вводить поле табельный номер и от него плясать

     

    а про лог файл тебе практически написали всё

    только цикл делай

     

    Образец кода

    Set FSO = CreateObject("Scripting.FileSystemObject")
    Set TF = FSO.CreateTextFile("C:\"log" "&Date()&".txt")
    TF.Writeline "--------log--------"

     

    'тут какие надо значения

    TF.WriteLine "User " & UserName & " may exists"


    TF.Writeline "--------END------"
    TF.Write vbCrLf
    TF.Close
    MsgBox ("Done !!!")

     

     

    24 декабря 2007 г. 23:52
  •  

    Спасибо  пригодится на будущее...

    Вчера, всех завел! Пришлось немного поработать с таблицей полностью почистил и постепенно всех ввел

     

    Спасибо

    25 декабря 2007 г. 7:51