none
Script p/ remover maquinas do AD fora de padrao RRS feed

  • Pergunta

  • Temos um cliente que quer manter o Ad organizado. Ele quer que computadores com nome que nao seja padrão, sejam tirados do Active directory. por exemplo.
    Agente usa nomes das maquinas assim: INTERC001, INTERC002.

    Quero criar uma regra(script) para excluir computadores com nomes como ex. computadorxp, estacao01, etc, sempre que alguém colocar computadores no dominio com esses nomes.
    É possivel?

    terça-feira, 24 de janeiro de 2012 14:25

Respostas

  • Claudio,

    Tente esta .BAT

    :: Gera lista com todos os computadores
    dsquery computer -limit 1000 > computadores_todos.txt
    
    
    :: Faça filtros
    :: Filtro 1
    findstr /I /V "CN=INTERC" computadores_todos.txt > computadores_filtro_1.txt
    
    :: Filtro 2
    findstr /I /V "CN=DEFINA VC" computadores_filtro_1.txt > computadores_filtro_2.txt
    
    
    ::    Neste ponto vc tem o arquivo computadores_filtro_2.txt com todas
    :: as contas que deseja apagar.
    
    
    :: Lê cada linha do arquivo e apaga conta
    for /f "Tokens=*" %%i in (computadores_filtro_2.txt) do DSRM computer %%i -noprompt
    

     

     

    Cuidado ao executar, ELE VAI APAGAR TODAS AS CONTAS QUE ESTIVEREM NO ARQUIVO  computadores_filtro_2.txt

    Como o script trabalha:

    1) Gera uma lista de todas as contas de computador do seu dominio, o formato do nome é caminho LDAP da conta(Ex: CN=INTERC001,OU=x,DC...)

    2) Aplicar filtros, vc tem a lista com todos, agora retire dela o que vc não quer, cada vez que utilizo o findstr eu gero uma nova lista sem os computadores que usei no filtro no Filtro 1 retire da lista todos que começam pro CN=INTER)

    Já deixei um filtro 2 pronto pra vc, acho dificil alguem ter em seu dominio uma única nomeclatura

    Repare que cada filtro lê o arquivo gerado pelo filtro anterior.

    3)Depois de aplicar todos os filtro que vc quiser então pegue o ultimo arquivo gerado (no caso computadores_filtro_2.txt), o script vai ler linha por linha e apagar a conta.

    Dica: Retire a ultima linha do script e faça os teste e veja o conteudo que vai ser gerado no arquivo de filtro, adicione ou retire os filtros que vc necessita, quando estiver tudo certo retorne a ultima linha e altere o nome do arquivo que ele vai ler.

     


    Fábio de Paula Junior
    terça-feira, 24 de janeiro de 2012 15:08
    Moderador

Todas as Respostas

  • Claudio,

    Tente esta .BAT

    :: Gera lista com todos os computadores
    dsquery computer -limit 1000 > computadores_todos.txt
    
    
    :: Faça filtros
    :: Filtro 1
    findstr /I /V "CN=INTERC" computadores_todos.txt > computadores_filtro_1.txt
    
    :: Filtro 2
    findstr /I /V "CN=DEFINA VC" computadores_filtro_1.txt > computadores_filtro_2.txt
    
    
    ::    Neste ponto vc tem o arquivo computadores_filtro_2.txt com todas
    :: as contas que deseja apagar.
    
    
    :: Lê cada linha do arquivo e apaga conta
    for /f "Tokens=*" %%i in (computadores_filtro_2.txt) do DSRM computer %%i -noprompt
    

     

     

    Cuidado ao executar, ELE VAI APAGAR TODAS AS CONTAS QUE ESTIVEREM NO ARQUIVO  computadores_filtro_2.txt

    Como o script trabalha:

    1) Gera uma lista de todas as contas de computador do seu dominio, o formato do nome é caminho LDAP da conta(Ex: CN=INTERC001,OU=x,DC...)

    2) Aplicar filtros, vc tem a lista com todos, agora retire dela o que vc não quer, cada vez que utilizo o findstr eu gero uma nova lista sem os computadores que usei no filtro no Filtro 1 retire da lista todos que começam pro CN=INTER)

    Já deixei um filtro 2 pronto pra vc, acho dificil alguem ter em seu dominio uma única nomeclatura

    Repare que cada filtro lê o arquivo gerado pelo filtro anterior.

    3)Depois de aplicar todos os filtro que vc quiser então pegue o ultimo arquivo gerado (no caso computadores_filtro_2.txt), o script vai ler linha por linha e apagar a conta.

    Dica: Retire a ultima linha do script e faça os teste e veja o conteudo que vai ser gerado no arquivo de filtro, adicione ou retire os filtros que vc necessita, quando estiver tudo certo retorne a ultima linha e altere o nome do arquivo que ele vai ler.

     


    Fábio de Paula Junior
    terça-feira, 24 de janeiro de 2012 15:08
    Moderador
  • O script vc terá que agendá-lo em um servidor, não conheço uma forma que execute o script todas vez que uma conta é criada, então a reparação será pontual, se vc tem muitas contas criadas durante o dia coloque o script para rodar várias vezes (de uma em uma hora por exemplo).


    Fábio de Paula Junior
    terça-feira, 24 de janeiro de 2012 15:11
    Moderador
  • Fabio obrigado...

    Bem se entendi direito... Entao...
    Cada vez que voce usa o findstr /I /V "CN=DEFINA VC", tiramos da lista geral de computadores as contas que NAO queremos excluir, certo?
    E se eu precisar especificar mais nomes para não serem excluídos devo usar novamente o findstr /I /V "CN=DEFINA VC". 


    quinta-feira, 26 de janeiro de 2012 16:53
  • Isso mesmo, cada filtro tira da lista os micros que eu não quero excluir, ao final é gerado um arquivo com nome dos micros que eu quero excluir.

    Veja, eu coloquei dois filtros , se eu fosse colocar um terceiro seria:

     

    :: Filtro 3
    findstr /I /V "CN=estetambenaoapaga" computadores_filtro_2.txt > computadores_filtro_3.txt
    
    

    Veja que nos parametros eu filtro o arquivo que foi gerado no filtro 2 (computadores_filtro_2), e gero um novo arquivo (computadores_filtro_3)

     

    Não se esqueça de alterar a ultima linha para que ela leia o arquivo gerado pelo ultimo filtro:

    :: Lê cada linha do arquivo e apaga conta
    for /f "Tokens=*" %%i in (computadores_filtro_3.txt) do DSRM computer %%i -noprompt


    Fábio de Paula Junior
    quinta-feira, 26 de janeiro de 2012 17:12
    Moderador