Script para puxar uma lista de caixas de correio do usuário com a conta do Active Directory desabilitada

2

Eu tenho um processo pelo qual desabilitamos uma conta de usuário do Active Directory quando eles são encerrados. A caixa de correio do Exchange 2007 é deixada e o encaminhamento é definido para o gerenciador de usuários. Eu preciso executar um script periodicamente que vai puxar uma lista de caixas de correio atualmente ativa com a conta do AD correspondente desativada. Eu não tenho experiência com qualquer tipo de script, mas acredito que isso pode ser feito com base em outras coisas que li. Eu fiz algumas pesquisas, mas cheguei de mãos vazias com este requisito específico. Obrigado.

Server 2003R2, Exchange 2007, AD

Para ficar claro, eu não estou pedindo para alguém escrever isso para mim, apenas alguns links, possivelmente, para me empurrar na direção certa.

    
por David Yenglin 23.09.2010 / 17:34

4 respostas

1

Você pode usar chamadas LDAP padrão por meio de um idioma como o PHP ou usar chamadas específicas do AD de um produto Microsoft (C # com a biblioteca DirectoryServices, por exemplo). Eu não tenho o Exchange, por isso não sei quais são os atributos brutos das caixas de correio, mas para ver se uma conta está desabilitada, você deve verificar o atributo "userAccountControl" para cada usuário e interpretar os sinalizadores numéricos para ver se a conta está desativada (a lista de sinalizadores pode ser vista aqui: link )

O processo básico para o script seria:

  1. Vincule ao Active Directory usando LDAP (PHP, perl etc.) ou DirectoryService (Visual Basic, C #).

  2. Faça uma pesquisa por todos os objetos de usuário (objetos com um SamAccountType de 30000000 em hex) que estão desabilitados (objetos com um valor hexadecimalAccountControl contendo '2' em sua forma inteira)

  3. Faça um loop pelos objetos resultantes e faça uma chamada para determinar quais têm caixas de correio ativas (mais uma vez, não uso o Exchange, por isso não tenho uma boa resposta aqui).

  4. Imprima ou grave no arquivo alguns atributos apropriados toda vez que receber um hit em # 3 (sAMAccountName, dn e cn seriam bons lugares para começar) junto com talvez um carimbo de data para o relatório inteiro. / p>

por 23.09.2010 / 20:07
0

Deve haver uma ferramenta instalada com seu Exchange chamado LDIFDE . Com essa ferramenta, você pode importar ou exportar coisas do seu ActiveDirectory . Se você precisar de um arquivo contendo todas as contas de usuário desativadas, basta abrir uma linha de comando e digitar:

LDIFDE -u -f myexport.ldif -r "(& (objectCategory = person) (userAccountControl = 514))"

Se os dados exportados forem um pouco demais, você pode limitar isso com vários parâmetros. Se você quiser apenas os nomes das contas desativadas, tente

LDIFDE -u -f myexport.ldif -r "(& (objectCategory = pessoa) (userAccountControl = 514))" -l "dn"

Atenciosamente, Phil.

    
por 23.09.2010 / 20:34
0

Isso deve ajudar: link

Tenho certeza de que há uma maneira de fazer isso usando o PowerShell, mas não tenho um servidor do Exchange disponível no momento ...

    
por 23.09.2010 / 20:38
0

Para compartilhar o que acabei usando como minha solução final, gostaria de elaborar além dos comentários que deixei na resposta de cada pessoa.

Eu decidi começar a usar o atributo Ocultar das listas de endereços do Exchange quando um funcionário é encerrado.

Então usar o LDIFDE com uma combinação das informações fornecidas por Phil e do link do Massimo aqui é o que eu fiz.

LDIFDE -f c:\disabledusersmailbox.txt -r "(&(UserAccountControl=514)(objectClass=User)(msExchHideFromAddressLists=TRUE))" -l "dn"
    
por 23.09.2010 / 22:02