Usuário com melhor resposta
Script p/ remover maquinas do AD fora de padrao

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?
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- Editado Fábio JrModerator terça-feira, 24 de janeiro de 2012 15:09
- Sugerido como Resposta Fábio JrModerator terça-feira, 24 de janeiro de 2012 15:47
- Marcado como Resposta Fábio JrModerator quinta-feira, 26 de janeiro de 2012 10:37
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- Editado Fábio JrModerator terça-feira, 24 de janeiro de 2012 15:09
- Sugerido como Resposta Fábio JrModerator terça-feira, 24 de janeiro de 2012 15:47
- Marcado como Resposta Fábio JrModerator quinta-feira, 26 de janeiro de 2012 10:37
-
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 -
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".
-
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- Editado Fábio JrModerator quinta-feira, 26 de janeiro de 2012 17:14