none
Mover computadores automaticamente para OU´s específicas RRS feed

  • 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

    quinta-feira, 15 de setembro de 2011 20:12

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 parametros

    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"
    
    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
    sexta-feira, 16 de setembro de 2011 13:26
    Moderador

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
    quinta-feira, 15 de setembro de 2011 20:44
    Moderador
  • 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?

    sexta-feira, 16 de setembro de 2011 11:50
  • Cole aqui também o comando que você utilizou.
    Fábio de Paula Junior
    sexta-feira, 16 de setembro de 2011 12:02
    Moderador
  • dsquery computer "cn=Computers,dc=marista,dc=intra" -name 010* | dsmove -newparent "ou=Computers,ou=Londrina,ou=ABEC,dc=marista,dc=intra"

    sexta-feira, 16 de setembro de 2011 12:08
  • 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
    sexta-feira, 16 de setembro de 2011 12:18
    Moderador
  • 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?

    sexta-feira, 16 de setembro de 2011 13:09
  • 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 parametros

    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"
    
    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
    sexta-feira, 16 de setembro de 2011 13:26
    Moderador