none
Alterar o campo Telephone number RRS feed

  • Pergunta

  • Boa noite pessoal,

    Queria ajuda em um script. Tenho 300 funcionários e queria alterar o telefone (Telephone number:) que está cadastrado em cada usuário do AD apartir de um arquivo txt.

    O arquivo texto seria mais ou menos assim:  João Carlos,+55(42) 5555-5555
                                                                     Fernando Silva,+55(42)5555-5556 

    Como seria o script? Tentei fazer mas não consegui.
    Obrigado.

    Abraços.

    domingo, 12 de julho de 2009 23:13

Respostas

  • Olá,

    Rodrigo, fiz o tratamento do campo no script abaixo:


    objConnection.Provider = "ADsDSOObject"
    objConnection.Open "Active Directory Provider"
    Set objCommand.ActiveConnection = objConnection

    objCommand.Properties("Page Size") = 1000
    objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE

    Set objFSO = CreateObject("Scripting.FileSystemObject")
    'caminho do arquivo txt
    Set objTextFile = objFSO.OpenTextFile("C:\users.txt",ForReading)


    Do While objTextFile.AtEndOfStream <> True
       linha = objTextFile.ReadLine
       linha = split(linha,",")
       nome = linha(0)
       telefone = linha(1)

       objCommand.CommandText = _
           "SELECT name,distinguishedname,instanceType FROM 'LDAP://dc=finegroup,dc=local' " & _
           "WHERE objectCategory='user' AND Name = '*" & nome & "*'"  

       Set objRecordSet = objCommand.Execute
       if not objRecordSet.EOF Then
          objRecordSet.MoveFirst
          Do Until objRecordSet.EOF
             strNome = Replace(objRecordSet.Fields("distinguishedname").Value , "/", "\/")
             Set objUser = GetObject("LDAP://" & strNome )
              objUser.TelephoneNumber = telefone
              objUser.SetInfo
             objRecordSet.MoveNext  
          Loop
       Else
          wscript.echo "Usuário: " & nome & " não encontrado"
      End if

    Loop



    Faça os testes e nos retorne


    Até mais,

    Jesiel

    Obs.: Se útil, classifique
    terça-feira, 14 de julho de 2009 12:57

Todas as Respostas

  • Olá,

    Segue um exemplo:

    Crie um arquivo (no exemplo é o c:\users.txt)

    Neste arquivo escreva conforme abaixo:
    nome,telefone
    nome2,telefone2

    Salve o script (VBS) abaixo:

    Const ForReading = 1
    Const ADS_SCOPE_SUBTREE = 2

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

    objCommand.Properties("Page Size") = 1000
    objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE

    Set objFSO = CreateObject("Scripting.FileSystemObject")
    'caminho do arquivo txt
    Set objTextFile = objFSO.OpenTextFile("C:\users.txt",ForReading)


    Do While objTextFile.AtEndOfStream <> True
       linha = objTextFile.ReadLine
       linha = split(linha,",")
       nome = linha(0)
       telefone = linha(1)

       objCommand.CommandText = _
           "SELECT name,distinguishedname,instanceType FROM 'LDAP://dc=finegroup,dc=local' " & _
           "WHERE objectCategory='user' AND Name = '*" & nome & "*'"  

       Set objRecordSet = objCommand.Execute

       objRecordSet.MoveFirst
       Do Until objRecordSet.EOF
          Set objUser = GetObject("LDAP://" & objRecordSet.Fields("distinguishedname").Value )
           objUser.TelephoneNumber = telefone
           objUser.SetInfo
       objRecordSet.MoveNext

    Loop

    Loop



    Faça os testes e nos retorne.

    Até mais,

    Jesiel

    Obs.: Se útil, classifique



    segunda-feira, 13 de julho de 2009 17:07
  • Jesiel,

    Valeu pela ajuda, mas está gerando o seguinte erro ao executar o script.

    Line: 32
    Char: 7
    Error: 0x80005000
    Code: 80005000
    Source: (null)

    segunda-feira, 13 de julho de 2009 19:24
  • Olá,

    Fiz umas alterações, testa agora pra ver se funciona:

    Const ForReading = 1
    Const ADS_SCOPE_SUBTREE = 2

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

    objCommand.Properties("Page Size") = 1000
    objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE

    Set objFSO = CreateObject("Scripting.FileSystemObject")
    'caminho do arquivo txt
    Set objTextFile = objFSO.OpenTextFile("C:\users.txt",ForReading)


    Do While objTextFile.AtEndOfStream <> True
       linha = objTextFile.ReadLine
       linha = split(linha,",")
       nome = linha(0)
       telefone = linha(1)

       objCommand.CommandText = _
           "SELECT name,distinguishedname,instanceType FROM 'LDAP://dc=finegroup,dc=local' " & _
           "WHERE objectCategory='user' AND Name = '*" & nome & "*'"  

       Set objRecordSet = objCommand.Execute
       if not objRecordSet.EOF Then
          objRecordSet.MoveFirst
          Do Until objRecordSet.EOF
             Set objUser = GetObject("LDAP://" & objRecordSet.Fields("distinguishedname").Value )
              objUser.TelephoneNumber = telefone
              objUser.SetInfo
             objRecordSet.MoveNext  
          Loop
       Else
          wscript.echo "Usuário: " & nome & " não encontrado"
      End if

    Loop


    No arquivo texto você tem que colocar igual está no display name do usuário.

    Até mais,

    Jesiel

    Obs.: Se útil, classifique
    segunda-feira, 13 de julho de 2009 19:37
  • Josiel,

    Fiz alguns teste coloquei no txt igual ao display e o script só funcionou se no AD tiver cadastrado um nome sem conter o carectere "/", por exemplo: Fernanda Silva - Financeiro, mas se estiver Fernanda Silva - Financeiro/CE não altera o telefone.


    Todos os usuários daqui tem o "/" no nome.
    segunda-feira, 13 de julho de 2009 20:26
  • Olá,

    Rodrigo, fiz o tratamento do campo no script abaixo:


    objConnection.Provider = "ADsDSOObject"
    objConnection.Open "Active Directory Provider"
    Set objCommand.ActiveConnection = objConnection

    objCommand.Properties("Page Size") = 1000
    objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE

    Set objFSO = CreateObject("Scripting.FileSystemObject")
    'caminho do arquivo txt
    Set objTextFile = objFSO.OpenTextFile("C:\users.txt",ForReading)


    Do While objTextFile.AtEndOfStream <> True
       linha = objTextFile.ReadLine
       linha = split(linha,",")
       nome = linha(0)
       telefone = linha(1)

       objCommand.CommandText = _
           "SELECT name,distinguishedname,instanceType FROM 'LDAP://dc=finegroup,dc=local' " & _
           "WHERE objectCategory='user' AND Name = '*" & nome & "*'"  

       Set objRecordSet = objCommand.Execute
       if not objRecordSet.EOF Then
          objRecordSet.MoveFirst
          Do Until objRecordSet.EOF
             strNome = Replace(objRecordSet.Fields("distinguishedname").Value , "/", "\/")
             Set objUser = GetObject("LDAP://" & strNome )
              objUser.TelephoneNumber = telefone
              objUser.SetInfo
             objRecordSet.MoveNext  
          Loop
       Else
          wscript.echo "Usuário: " & nome & " não encontrado"
      End if

    Loop



    Faça os testes e nos retorne


    Até mais,

    Jesiel

    Obs.: Se útil, classifique
    terça-feira, 14 de julho de 2009 12:57
  • Josiel,  Valeu, deu certinho.
    Muito obrigado.

    Qual dica vc daria pra quem pretende aparender a criar script? Por onde começar? Queria aprender.


    Abraços.
    terça-feira, 14 de julho de 2009 13:33