none
Erro com script para inserir usuário no AD utilizando arquivo csv RRS feed

  • Pergunta

  • Ola a todos,

    Estou criando um script vbs que lé um arquivo csv, e conforme o arquivo vai inserindo usuarios no AD, usei o seguinte molde para alterar e usar no meu objetivo, mas não fui muito feliz, o link com o script que utilizei foi o abaixo.

    http://www.computerperformance.co.uk/vbscript/vbscript_user_create.htm

    o script que criei adaptando foi o abaixo

    ---- inicia aqui --------------------

    Dim objRootLDAP, objContainer, objUser,
    objFSO, ObjTextFile
    Dim strUser, strName, strContainer, login, arrStr

    strName = "usuarios de teste"
    strContainer = "OU=vbs ,"

    arquivo = "c:\arquivos.csv"

    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objTextFile = objFSO
    .OpenTextFile(arquivo, ForReading)
    objTextFile.SkipLine

    Do While Not objTextFile.AtEndOfStream
    arrStr = Split(objTextFile.ReadLine,",")
    login = arrstr(1)

    Set objRootLDAP = GetObject("LDAP://rootDSE")
    Set objContainer = GetObject("LDAP://" & strContainer & objRootLDAP.Get("defaultNamingContext"))

    Set objUser = objContainer.Create("User", "cn=" & login)
    objUser.Put "sAMAccountName", login
    objUser.Put "givenName", strName
    objUser.SetInfo
    Loop

    objTextFile.close
    WScript.Quit
    ---- fina aqui ----------


    quando executo o script dá o seguinte erro.

    "A device attached to the system is not functioning - Error Code : 8007001f "

    Alguém já teve este problema ou já passou por determinada situação tem alguma idéia do que possa ser este erro, a linha e o caracter do erro é na linha que possui o comando objUser.setInfo. Desde já agradeço.

    Atenciosamente.

    quinta-feira, 4 de outubro de 2007 12:04

Respostas

  • Ricardo o seu script ficaria como mostrado abaixo, o que foi alterado está em vermelho.

     

    O arquivo CSV deverá estar assim:

    Nome1,login1

    Nome2,login2

    Nome3,login3

     

    Code Block

    Dim objRootLDAP, objContainer, objUser, objFSO, ObjTextFile
    Dim strUser, strName, strContainer
    Const ForReading = 1
    strContainer = "OU=vbs ,"

    arquivo = "C:\arquivos.csv"

    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objTextFile = objFSO.OpenTextFile(arquivo, ForReading)
    objTextFile.SkipLine

    Do While Not objTextFile.AtEndOfStream
     arrStr = Split(objTextFile.ReadLine,",")

     strName = arrstr(0)

     strUser = arrstr(1)

     Set objRootLDAP = GetObject("LDAP://rootDSE")
     Set objContainer = GetObject("LDAP://" & strContainer & objRootLDAP.Get("defaultNamingContext"))
     Set objUser = objContainer.Create("User", "cn=" & strUser)
     objUser.Put "sAMAccountName", strUser
     objUser.Put "givenName", strName
     objUser.SetInfo
    Loop

    objTextFile.close
    WScript.Quit

     

     


    quinta-feira, 4 de outubro de 2007 14:00
  • Ola Bruno,

    Fiz as alterações que você enviou e não funcionou como vc falou do formato do arquivo csv e fui ver ele realmente tinha um agravante eu estava usando  aspas entres os nomes, tirei as aspas e funcionou, seguei a essa conclusao depois de ler um ttroubleshoot abaixo

    http://manageengine.adventnet.com/products/ad-manager/help/misc/troubleshooting_tips.html#admgmt_modify_user_8007001f



    The possible reasons for this error could be:

    1. When creating an user, if the naming attributes, such as Name, Logon Name, SAM Account Name, etc., has some special characters in it.

    2. When modifying an user, if an unacceptable format is chosen for the naming attributes. For example, if the format chosen for the Logon Name is LastName.FirstName.Initials and if the user do not have any one of these attributes specified, this error will occur.

    Ele diz que pode ocorrer se existirem caracteres especiais ai que fui verificar o arquivo csv e tinha as aspas, o script final ficou conforme abaixo.
    Code Block

    Dim objRootLDAP, objContainer, objUser, objShell Dim strUser, strName, strContainer Dim arrStr, login, arquivo, fs, objTextFile strContainer = "OU=vbs ," Const ForReading = 1   arquivo ="C:\arquivos.csv"   Set fs=CreateObject("Scripting.FileSystemObject") Set objTextFile = fs.OpenTextFile(arquivo, ForReading)   objTextFile.SkipLine   Do While Not objTextFile.AtEndOfStream   arrStr = Split(objTextFile.ReadLine,",") strName = arrstr(0) strUser = arrstr(1)   Set objRootLDAP = GetObject("LDAP://rootDSE") Set objContainer = GetObject("LDAP://" & strContainer & objRootLDAP.Get("defaultNamingContext"))   Set objUser = objContainer.Create("User", "cn=" & strUser) objUser.Put "sAMAccountName", strUser objUser.Put "givenName", strName objUser.SetInfo   Loop   objTextFile.Close   WScript.Quit


    Muito obrigado pela ajuda e fica a dica. Smile

    Atenciosamente.


    quinta-feira, 4 de outubro de 2007 18:54

Todas as Respostas

  • Ricardo o seu script ficaria como mostrado abaixo, o que foi alterado está em vermelho.

     

    O arquivo CSV deverá estar assim:

    Nome1,login1

    Nome2,login2

    Nome3,login3

     

    Code Block

    Dim objRootLDAP, objContainer, objUser, objFSO, ObjTextFile
    Dim strUser, strName, strContainer
    Const ForReading = 1
    strContainer = "OU=vbs ,"

    arquivo = "C:\arquivos.csv"

    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objTextFile = objFSO.OpenTextFile(arquivo, ForReading)
    objTextFile.SkipLine

    Do While Not objTextFile.AtEndOfStream
     arrStr = Split(objTextFile.ReadLine,",")

     strName = arrstr(0)

     strUser = arrstr(1)

     Set objRootLDAP = GetObject("LDAP://rootDSE")
     Set objContainer = GetObject("LDAP://" & strContainer & objRootLDAP.Get("defaultNamingContext"))
     Set objUser = objContainer.Create("User", "cn=" & strUser)
     objUser.Put "sAMAccountName", strUser
     objUser.Put "givenName", strName
     objUser.SetInfo
    Loop

    objTextFile.close
    WScript.Quit

     

     


    quinta-feira, 4 de outubro de 2007 14:00
  • Ola Bruno,

    Fiz as alterações que você enviou e não funcionou como vc falou do formato do arquivo csv e fui ver ele realmente tinha um agravante eu estava usando  aspas entres os nomes, tirei as aspas e funcionou, seguei a essa conclusao depois de ler um ttroubleshoot abaixo

    http://manageengine.adventnet.com/products/ad-manager/help/misc/troubleshooting_tips.html#admgmt_modify_user_8007001f



    The possible reasons for this error could be:

    1. When creating an user, if the naming attributes, such as Name, Logon Name, SAM Account Name, etc., has some special characters in it.

    2. When modifying an user, if an unacceptable format is chosen for the naming attributes. For example, if the format chosen for the Logon Name is LastName.FirstName.Initials and if the user do not have any one of these attributes specified, this error will occur.

    Ele diz que pode ocorrer se existirem caracteres especiais ai que fui verificar o arquivo csv e tinha as aspas, o script final ficou conforme abaixo.
    Code Block

    Dim objRootLDAP, objContainer, objUser, objShell Dim strUser, strName, strContainer Dim arrStr, login, arquivo, fs, objTextFile strContainer = "OU=vbs ," Const ForReading = 1   arquivo ="C:\arquivos.csv"   Set fs=CreateObject("Scripting.FileSystemObject") Set objTextFile = fs.OpenTextFile(arquivo, ForReading)   objTextFile.SkipLine   Do While Not objTextFile.AtEndOfStream   arrStr = Split(objTextFile.ReadLine,",") strName = arrstr(0) strUser = arrstr(1)   Set objRootLDAP = GetObject("LDAP://rootDSE") Set objContainer = GetObject("LDAP://" & strContainer & objRootLDAP.Get("defaultNamingContext"))   Set objUser = objContainer.Create("User", "cn=" & strUser) objUser.Put "sAMAccountName", strUser objUser.Put "givenName", strName objUser.SetInfo   Loop   objTextFile.Close   WScript.Quit


    Muito obrigado pela ajuda e fica a dica. Smile

    Atenciosamente.


    quinta-feira, 4 de outubro de 2007 18:54