none
exportar para um txt todos usuário do AD que tem a propriedade marcada como "nenhum" RRS feed

  • Pergunta

  • Olá,

     Gostaria de exportar para um txt todos usuário do AD que tem a propriedade marcada como  "nenhum", indo nas propriedades do usuário na aba Exchange Geral > Opções de entrega > encaminhamento de endereço .
    Obs: Meu Exchange é 2003.

    Eu possuo um script que mostra quem tem encaminhamento de endereço (Este abaixo):

    'Set RootDSE
    Set objRootDSE = GetObject("LDAP://rootDSE")
    strDomain = objRootDSE.Get("defaultNamingContext")
    strADPath = "LDAP://" & strDomain
    'wscript.Echo strADPath
    Set objDomain = GetObject(strADPath)
    wscript.echo "Domain: " & objDomain.distinguishedName


    'Setup ADODB connection
    Set objConnection = CreateObject("ADODB.Connection")
    objConnection.Open "Provider=ADsDSOObject;"
    Set objCommand = CreateObject("ADODB.Command")
    objCommand.ActiveConnection = objConnection


        'Execute search command to look for user
        objCommand.CommandText = _
          "<" & strADPath & ">" & ";(&(objectCategory=person)(objectClass=user)(homeMDB=*)(altRecipient=*))" & ";distinguishedName,displayName,altRecipient,whenCreated;subtree"

       Set objUsersRS = objCommand.Execute
       strOutput = "Number of users with mail redirected " & objUsersRS.RecordCount & VbCrLf & VbCrLf
       strOutput = strOutput & "Sr,Target User,Redirected To,Deliver To Both" & VbCrLf

           varUserCounter = 1
          
           While Not objUsersRS.EOF 'Iterate through the search results
          strUserDN = objUsersRS.Fields("distinguishedName")
                set objUser = GetObject("LDAP://"& strUserDN & "")
                strRedirectedToDN = objUsersRS.Fields("altRecipient")
                Set objRedirectedTo = GetObject("LDAP://" & strRedirectedToDN & "")
                strOutput = strOutput & varUserCounter & "," & objUser.displayName & "," & objRedirectedTo.displayName
                If objUser.deliverAndRedirect Then
                   strOutput = strOutput & ",Yes"
                Else
                   strOutput = strOutput & ",No"
                End If
                strOutput = strOutput & VbCrLf
                varUserCounter = varUserCounter + 1
                objUsersRS.MoveNext
               
           Wend
           WScript.Echo strOutput
          
      '============================================== END ======================




    ...Mas eu queria o inverso ou seja saber quem não tem encaminhamento de endereço.
    Até onde consegui entender a propriedade (altRecipient=*) é a que trás os encaminhamentos de endereço, mas não sei qual trás o valor padrão. (nenhum)


    Espereço ter sido claro.


    abraços.

    quarta-feira, 4 de fevereiro de 2009 15:25

Respostas

  • Olá,

    Altere os parametros da query e faça o teste.

    Segue a linha para alterar:

    sQuery = "SELECT cn, altRecipient From 'LDAP://" & objDomain.distinguishedName & "' where objectClass = 'user' and objectCategory = 'person' order by cn ASC"

    Altere a linha e poste os resultados.

    Até mais,

    Jesiel

    Obs.: Se útil, classifique


    • Marcado como Resposta scriptes quinta-feira, 5 de fevereiro de 2009 16:57
    quinta-feira, 5 de fevereiro de 2009 10:10

Todas as Respostas

  • Olá,

    Segue abaixo o script. Ele gera um arquivo para o objeto sem redirecionamento e com redirecionamento.

    Caso você não queira colocar os objetos com redirecionamento, basta comentar o else.


    Set objRootDSE = GetObject("LDAP://rootDSE")
    strDomain = objRootDSE.Get("defaultNamingContext")
    strADPath = "LDAP://" & strDomain
    Set objDomain = GetObject(strADPath)

    strFileName = ".\forwarders.txt"
     
    Set objFSO = CreateObject("Scripting.FileSystemObject")
     
    Set objOutputFile = objFSO.OpenTextFile(strFileName, 2, true, 0)
     
    Set oConnection = CreateObject("ADODB.Connection")
     
    Set oCommand = CreateObject("ADODB.Command")
     
    oConnection.Provider = "ADsDSOObject"
     
    oConnection.Open "Active Directory Provider"
     
    Set oCommand.ActiveConnection = oConnection
     
     
    sQuery = "SELECT cn, altRecipient From 'LDAP://" & objDomain.distinguishedName & "' where objectClass = 'user' order by cn ASC"

    'wscript.echo squery
     
     
    oCommand.CommandText = sQuery
     
    Set oResults = oCommand.Execute
     
     
     
    Do While Not oResults.EOF or oResults.BOF
     
       
     
        username = oResults.Fields("cn")
     
        forwarder = oResults.Fields("altRecipient")
     
     
     
        If isnull(forwarder) Then
     
         objOutputFile.WriteLine "Usuário: " & username
     
        objOutputFile.WriteLine "NAO UTILIZA REDIRECIONAMENTO"
     
        objOutputFile.WriteLine
     
         Else

         objOutputFile.WriteLine "Usuário: " & username
     
        objOutputFile.WriteLine "Redireciona para: " & forwarder
     
        objOutputFile.WriteLine
     
        End If
     
       
     
        oResults.MoveNext
     
     
     
    Loop
     
     
    objOutputFile.Close



    Faça os testes e nos retorne.

    Até mais,

    Jesiel

    Obs.: Se útil, classifique
    quarta-feira, 4 de fevereiro de 2009 20:04
  • Testei o script mas está acontecendo o seguinte:

    Ele está trazendo contas de máquinas e estranhamente ele está varrendo até a letra "P" usuários com que iniciam com a letra Q em diante não são listados.


    Obrigado pelo ajuda até o momento.
    quarta-feira, 4 de fevereiro de 2009 21:52
  • Olá,

    Altere os parametros da query e faça o teste.

    Segue a linha para alterar:

    sQuery = "SELECT cn, altRecipient From 'LDAP://" & objDomain.distinguishedName & "' where objectClass = 'user' and objectCategory = 'person' order by cn ASC"

    Altere a linha e poste os resultados.

    Até mais,

    Jesiel

    Obs.: Se útil, classifique


    • Marcado como Resposta scriptes quinta-feira, 5 de fevereiro de 2009 16:57
    quinta-feira, 5 de fevereiro de 2009 10:10
  • Perfeito,

    Exatamente o que eu precisava, agora está funcionando tudo certo.

    Muito obrigado.
    quinta-feira, 5 de fevereiro de 2009 16:57
  • Jesiel

    Desculpe abusar da vontade, mas testando novamente vi que ele estava trazendo usuários que não tem mailbox ou seja no script informa se o usuário tem ou não encaminhamento, mas eu preciso que liste somente usuários que tenha mailbox.
    Por exemplo:
    Se usuário com mailbox tem encaminhamento externo, exibe o encaminhamento.
    Se usuário com mailbox não tem encaminhamento, exibe "usuário não tem encaminhamento".
    quinta-feira, 5 de fevereiro de 2009 18:31