Usuário com melhor resposta
Mover computadores automaticamente para OU´s específicas

Pergunta
-
Olá pessoal, preciso de ajuda para criar um .vbs para o seguinte cenário:
AD - Windows Server 2008 Enterprise
- Quando adiciono uma máquina no domínio, por padrão, automaticamente o objeto do PC é criado na pasta "Computers" do domínio ok.
- Acontece que diariamente, muitas máquinas são adicionadas na matriz da empresa e em várias filiais, então acabam ficando misturados os objetos nesta pasta padrão "Computers" do domínio.
- Para que eu não precise ficar movendo manualmente os objetos de cada PC para sua respectiva OU no domínio, gostaria de um script que fizesse o seguinte:
- Lê-se os objetos da pasta "Computers" e a partir de um critério (ex: 3 primeiros caracteres do nome do objeto "CTBxxx") e move-se para uma determinada OU (ex: Curitiba) na estrutura do AD, e assim por diante para outro critério "SPOxxx" que mova para outra OU (ex: Sao Paulo).
Tendo este script, crio uma Schedule Task para rodar no meu DC e mantenho organizado meus objetos de PC.
Obrigado e espero ajuda...
Abraços
Respostas
-
A uma diferença sútil apenas na variavel que deve ser com % ou %%.
No prompt:
for /f "Tokens=*" %i in ('dsquery computer "cn=Computers,dc=marista,dc=intra" -name 010*') do dsmove %i -newparent "ou=Computers,ou=Londrina,ou=ABEC,dc=marista,dc=intra"
No .BAT (se vc agendar a .BAT verifique se o usuário da tarefa possui permissão necessária)for /f "Tokens=*" %%i in ('dsquery computer "cn=Computers,dc=marista,dc=intra" -name 010*') do dsmove %%i -newparent "ou=Computers,ou=Londrina,ou=ABEC,dc=marista,dc=intra"
Você pode adicionar várias linhas no .BAT modificando apenas os parametrosfor /f "Tokens=*" %%i in ('dsquery computer "cn=Computers,dc=marista,dc=intra" -name 010*') do dsmove %%i -newparent "ou=Computers,ou=Londrina,ou=ABEC,dc=marista,dc=intra" for /f "Tokens=*" %%i in ('dsquery computer "cn=Computers,dc=marista,dc=intra" -name SPO*') do dsmove %%i -newparent "ou=Computers,ou=SAO PAULO,ou=ABEC,dc=marista,dc=intra"
Com o mesmo usuário que vc executou no prompt vc executou o .BAT? Alguma mensagem de erro? rode o .BAT de dentro do prompt ao inves de 2 cliques para ver o erro.
Fábio de Paula Junior- Sugerido como Resposta Fábio JrModerator sexta-feira, 16 de setembro de 2011 16:37
- Marcado como Resposta Marco_AM sexta-feira, 16 de setembro de 2011 19:06
Todas as Respostas
-
Utilize um .BAT, é bem simples.
Crie uma linha para cada localidade especificando como é o inicio do nome (ex: SPO*) no comando dsquery e qual a OU de destino no comando DSMOVE
dsquery computer "cn=computers,dc=seudominio,dc=com" -name "spo*" | dsmove -newparent "ou=SAO PAULO,dc=seudominio,dc=com" dsquery computer "cn=computers,dc=seudominio,dc=com" -name "CTB*" | dsmove -newparent "ou=CURITIBA,dc=seudominio,dc=com"
Fábio de Paula Junior- Editado Fábio JrModerator sexta-feira, 16 de setembro de 2011 12:40 Comando estava errado, sobrado parametro computer no dsmove
-
Fábio,
Deu certo quando tenho apenas um objeto dentro do parâmetro definido (ex:CTBxxx).
Quando executo para o segundo parâmetro (ex:SPOxx1 e SPOxx2) da a mensagem abaixo:
dsmove failed:'CN=008XP02MEC,CN=Computers,DC=seudominio,DC=com' is an unknown par
ameter.
type dsmove /? for help.Não tem como fazer com .vbs mesmo?
-
-
-
Marco,
Você não é o primeiro a ter problema com este comando, veja se este contorno resolve:
for /f "Tokens=*" %%i in ('dsquery computer "cn=Computers,dc=marista,dc=intra" -name 010*') do dsmove %%i -newparent "ou=Computers,ou=Londrina,ou=ABEC,dc=marista,dc=intra"
Obs.: Se for testar o comando direto no prompt tem que tirar um % de cada %%i, com dois %% é para ser utilizado dentro do .BAT
VBS vou ficar devendo no momento.
Fábio de Paula Junior -
Fábio, deu certo rodando o comando pelo prompt, dentro do .bat não executou, sabe por que?
É preciso colocar mais algum parâmetro dentro do .bat para que funcione?
Outra pergunta, para que eu possa fazer outras verificações e mover para outras OU´s, é só adicionar as novas linhas com os novos parâmetros?
-
A uma diferença sútil apenas na variavel que deve ser com % ou %%.
No prompt:
for /f "Tokens=*" %i in ('dsquery computer "cn=Computers,dc=marista,dc=intra" -name 010*') do dsmove %i -newparent "ou=Computers,ou=Londrina,ou=ABEC,dc=marista,dc=intra"
No .BAT (se vc agendar a .BAT verifique se o usuário da tarefa possui permissão necessária)for /f "Tokens=*" %%i in ('dsquery computer "cn=Computers,dc=marista,dc=intra" -name 010*') do dsmove %%i -newparent "ou=Computers,ou=Londrina,ou=ABEC,dc=marista,dc=intra"
Você pode adicionar várias linhas no .BAT modificando apenas os parametrosfor /f "Tokens=*" %%i in ('dsquery computer "cn=Computers,dc=marista,dc=intra" -name 010*') do dsmove %%i -newparent "ou=Computers,ou=Londrina,ou=ABEC,dc=marista,dc=intra" for /f "Tokens=*" %%i in ('dsquery computer "cn=Computers,dc=marista,dc=intra" -name SPO*') do dsmove %%i -newparent "ou=Computers,ou=SAO PAULO,ou=ABEC,dc=marista,dc=intra"
Com o mesmo usuário que vc executou no prompt vc executou o .BAT? Alguma mensagem de erro? rode o .BAT de dentro do prompt ao inves de 2 cliques para ver o erro.
Fábio de Paula Junior- Sugerido como Resposta Fábio JrModerator sexta-feira, 16 de setembro de 2011 16:37
- Marcado como Resposta Marco_AM sexta-feira, 16 de setembro de 2011 19:06