none
CADASTRO COM EXPORTAÇÃO RRS feed

  • Pergunta

  •  

    Boa tarde a todos.

     

    Alguem pode me ajudar, como que faço para "complementar" um script que exporta

    contatos de um arquivo users.csv para dentro do meus contatos no AD.

     

    Por exemplo, estou conseguindo importar tudo certinho, mas gostaria de acrescentar

    a coluna CEP nestes contatos. - Alguem pode me ajudar?
    o Autor desse script é o Grande Eugenio....Valeu cara pela força...

     

    Estes são os dados.

    NOME; EMAIL; DESCRIÇÃO; ENDEREÇO; TELEFONE; CELULAR; ESTADO; UF; PAIS

     

    Este é o script.

    Option Explicit
    Dim objContatos, objGrupo, objOU, objFSO, objArquivo, objRootDSE
    Dim strLinha, strDNSDominio, strArquivo, StrGrupo
    Dim strPesquisaUsuario, strNomeSeparado, strInfo
    Dim numTotal, numAdicionados, i
    Dim arrGrupos, arrColuna
    Set objRootDSE = GetObject("LDAP://RootDSE")
    strDNSDominio = objRootDSE.Get("DefaultNamingContext")
    Const ADS_PROPERTY_CLEAR = 1
    Const ADS_PROPERTY_UPDATE = 2
    Const ADS_PROPERTY_APPEND = 3
    Const ADS_PROPERTY_DELETE = 4
    strArquivo = "Contatos.csv"
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objArquivo = objFSO.OpenTextFile(strArquivo, 1)
    wscript.echo "[+] Criando Contatos(s) no Active Directory..."
    numTotal = 0
    numAdicionados = 0
    Do Until objArquivo.AtEndOfStream
      strLinha = objArquivo.ReadLine
      If strLinha <> "" Then
         numTotal = numTotal + 1
         arrColuna = Split(strLinha, ";")
         strPesquisaUsuario = PesquisaActiveDirectory( arrColuna ( 0 ), "Contact" )
         If ( strPesquisaUsuario = "Nao encontrado" ) Then
     wscript.echo "    [-] " & arrColuna ( 0 )
            numAdicionados = numAdicionados + 1
     Set objOU = GetObject("LDAP://CN=Users," & strDNSDominio )
     Set objContatos = objOU.Create("Contact", "cn=" & arrColuna ( 0 ) )
     objContatos.Put "mail", arrColuna ( 1 )
     strNomeSeparado = Split(arrColuna ( 0 ), " ")
            objContatos.Put "givenName", strNomeSeparado ( 0 )
            objContatos.Put "sn", strNomeSeparado( UBound( strNomeSeparado ) )
            objContatos.Put "displayName", arrColuna ( 0 )
     objContatos.Put "description", arrColuna ( 2 )
     objContatos.Put "streetAddress", arrColuna ( 3 )
     objContatos.Put "telephoneNumber", arrColuna ( 4 )
     objContatos.Put "homePhone", arrColuna ( 4 )
     objContatos.Put "mobile", arrColuna ( 5 )
            objContatos.Put "l", arrColuna ( 6 )
            objContatos.Put "st", arrColuna ( 7 )
            objContatos.Put "c", arrColuna ( 8 )
            objContatos.SetInfo
    ' objContatos.AccountDisabled = FALSE
    '       objContatos.SetInfo
        Else
     wscript.echo "    [x] " & arrColuna ( 1 )
        End If
      End If
    Loop
    Set objArquivo = Nothing
    Set objFSO = Nothing
    Wscript.Echo " "
    Wscript.Echo "[" & numAdicionados & "] registros criados"
    Wscript.Echo "[" & numTotal - numAdicionados & "] registros não criados"
    Wscript.Echo "[" & numTotal & "] total de registros processados"
    Wscript.Echo "[+] Fim da atualização."
    Wscript.Quit
    '-------------------------------------------------------------
    Public Function PesquisaActiveDirectory(strPesquisa, strTipoClass )
    PesquisaActiveDirectory = "Nao encontrado"
    if Len(strPesquisa) > 0 then
        Dim oAD
        Dim oGlobalCatalog
        Dim oRecordSet
        Dim oConnection
        Dim strADsPath
        Dim strQuery
        set oRecordSet = CreateObject("ADODB.Recordset")
        set oConnection = CreateObject("ADODB.Connection")
        Set oAD = GetObject("GC:")
        For Each oGlobalCatalog In oAD
            strADsPath = oGlobalCatalog.AdsPath
        Next
        oConnection.Provider = "ADsDSOObject"
        oConnection.Open "ADs Provider"
        strQuery = "<" & strADsPath & _
          ">;(&(objectClass=" & strTipoClass & ")(displayName=" & strPesquisa & "));distinguishedName;subtree" 
        Set oRecordSet = oConnection.Execute(strQuery)
        If oRecordSet.EOF And oRecordSet.BOF Then   
            PesquisaActiveDirectory = "Nao encontrado"
        Else
            While Not oRecordSet.EOF
                PesquisaActiveDirectory = oRecordSet.Fields("distinguishedName")
                oRecordSet.MoveNext
            Wend
        End If
    End If
    End Function

    quinta-feira, 22 de novembro de 2007 17:54

Respostas

  • Facil!!!!

    Acrescente o CEP ao final de cada linha do seu arquivo

     

    Exemplo:

    NOME; EMAIL; DESCRIÇÃO; ENDEREÇO; TELEFONE; CELULAR; ESTADO; UF; PAIS; CEP

     

    Depois altere o código acrescentando a linha abaixo antes do objContatos.SetInfo

    objContatos.Put "postalCode", arrColuna ( 9 )

     

    Só isso.
    quinta-feira, 22 de novembro de 2007 18:08

Todas as Respostas

  • Facil!!!!

    Acrescente o CEP ao final de cada linha do seu arquivo

     

    Exemplo:

    NOME; EMAIL; DESCRIÇÃO; ENDEREÇO; TELEFONE; CELULAR; ESTADO; UF; PAIS; CEP

     

    Depois altere o código acrescentando a linha abaixo antes do objContatos.SetInfo

    objContatos.Put "postalCode", arrColuna ( 9 )

     

    Só isso.
    quinta-feira, 22 de novembro de 2007 18:08
  • Ow grande Eugenio, mas uma vez "na lata", funcionou...

    Queria fazer uma pergunta, onde vc vizualiza o codigo desses campos?

    Por exemplo, "Zip/Postal Code" como sabe que é postalcode?
    Onde se vizualiza o nome dos campos?

     

    Grande abraço!

    quinta-feira, 22 de novembro de 2007 18:23
  • Internet tem tudo....... Mas você pode usar o CSVDE que esta no seu DC.

     

    Exemplo:

    csvde -f arquivo.txt

    quinta-feira, 22 de novembro de 2007 20:40
  • Ah sim, "O GOOGLE NOSSO DE CADA DIA NOS DAI HOJE"..........

     

    Valeu, é que quando se pesquisa no google, por exemplo, "all commands csvde" tras muita coisa

    ou "utilizar csvde para exportar" ou "use export csvde" etc.... ele apenas tras algumas explicações

    basicas, mas para quem nao tem experiencia, precisa de um passo-a-passo>..

     

    Valeu mais uma vez pela dica..

    Abraço""

    sexta-feira, 23 de novembro de 2007 12:11
  • Não é possivel...acho que sou zicado!...rs

    Tentei o comando assim no servidor

    C:\>csvde -f contatos.csv  (tentei tb .txt)
    Conectando - se ao "(nulo)"
    Logging in como usuário atual usando SSPI
    Exportando diretório de arquivo contatos.csv
    Pesquisando por entradas ...
    Writing as entradas

     

    e me deu o seguinte erro.

     

    Error writing to file. This error happens when the entry cannot be written, it
    can be caused by writing a Unicode value to a non-unicode file.
    An error has occurred in the program
    No log files were written.  In order to generate a log file, please
    specify the log file path via the -j option.

     

    Onde estou "pecando"?

    Preciso saber o codigo do campo FAX para exportação do arquivo.

    segunda-feira, 26 de novembro de 2007 13:14
  • Digite ai: csvde -f contatos.csv  -j c:

     

    Ele vai gerar um c:\>CSV.LOG

     

    Abra e veja qual o erro.

    segunda-feira, 26 de novembro de 2007 13:55
  • O Codigo do fax encontrei no GOOGLE.

     

    http://www.google.com.br/search?hl=pt-BR&q=fax+vbs+csvde&meta=

     

    Vou tentar com LOG e post o resultado.

     

    .......

    segunda-feira, 26 de novembro de 2007 13:59