none
3 Scripts pelo preço de 1 RRS feed

  • Discussão Geral

  • 3 Scripts pelo preço de 1

    Calma. Não estou vendendo nada. Ainda não...

    Só que reparei que sempre que respondo um post, em seguida surgem outras dúvidas comuns:

     - E se eu quiser que ele rode em todas as máquinas?

     - Quero que este script rode em todas as máquinas que estão listadas em um arquivo texto. Como fazer?

    Vou fazer um exemplo de UM script que realiza a mesma tarefa de TRÊS formas diferentes (e até mais).

    Este Script altera o nome do usuário local de nome "Administrador" para "ADMSuporte".

    Ele não tem nada de mais, A parte mais interessante para a minha proposta e a primeira linha, nela é atribuída a variável strComputer o valor ".", como outros objetos vão utilizar esta variável para se referenciar a um computador este "." vai indicar que o computador que vai sofrer a ação é o computador onde está sendo rodado o script.

    strComputer="."
     
    strLocalAdmin="Administrador"
     
    strNovoAdmin="ADMSuporte"
     
    
    Set objLocalAdmin = GetObject("WinNT://" & strComputer & "/" & strLocalAdmin)
     
    Set objComputer = GetObject("WinNT://" & strComputer)
     
    
    objComputer.MoveHere objLocalAdmin.AdsPath, strNovoAdmin
    

    Vou fazer uma modificação acrescentando uma linha após a primeira:

    if wscript.arguments.count>0 then strComputer=wscript.arguments(0)

    Esta linha faz o seguinte, Se for passado algum parâmetro, este parâmetro vai ser atribuído a variável strComputer.

    O Script agora ficou assim:

    strComputer="."
     
    if wscript.arguments.count>0 then strComputer=wscript.arguments(0)
     
    strLocalAdmin="Administrador"
     
    strNovoAdmin="ADMSuporte"
     
    
    
    Set objLocalAdmin = GetObject("WinNT://" & strComputer & "/" & strLocalAdmin)
     
    Set objComputer = GetObject("WinNT://" & strComputer)
     
    
    
    objComputer.MoveHere objLocalAdmin.AdsPath, strNovoAdmin
    

    Modo de Utilizar.(Vou considerar o script com o nome alteraadm.vbs)

    Utilizando da forma mais comum.

    Você quer alterar o nome do administrador do micro onde você está logado.

    Solução: Apenas execute o script clicando nele duas vezes ou chamando pelo cmd com:

    cscript alteraadm.vbs

    Tranquilo...

    Quero alterar o nome do administrador de um micro remoto, este micro tem o nome de WRK002.

    Solução: Abra o prompt e digite:

    cscript alteraadm.vbs WRK002

    O WRK002 é o argumento que vai ser passado para strComputer.

    Tá tranquilo?

    Tenho uma lista das estações em um arquivo texto (micros.txt), e quero fazer a alteração em todas e agora? :(

    Solução: Abra o prompt de comando e digite.

    FOR /F %M IN (micros.txt) DO cscript alteraadm.vbs %M

    Apenas garanta que o script e o arquivo texto estão no mesmo diretório de onde você está executando.

    Aqui já complicou um pouco , pois já envolveu comandos diferentes do VBScript mas nada que uma pesquisa no Google não resolva. Mas em resumo o FOR lê linha a linha o "micros.txt" passando a linha como parâmetro para o script.

    A idéia aqui era mostrar como programar uma vez e utilizar o mesmo código para fazer tarefas similares.

    Está bem simples mas quem quiser pode incrementar, usando outra tarefa ou recebendo mais de um parâmetro.Depende agora é da necessidade de cada um.


    • Editado Fábio JrModerator terça-feira, 17 de julho de 2012 11:42 Formatação do código
    segunda-feira, 30 de outubro de 2006 20:17
    Moderador

Todas as Respostas

  • Somente mais alguns comentários:

    - O Script acima usa WMI. Logo, não funcionará em Windows 9x a não ser que você instale manualmente o WMI Core (ainda assim, tem que ver se ele dá suporte a trocar nome das máquinas Windows 9x). Isso acontece porque ele não vem instalado por padrão, como nas máquinas a partir do Windows 2000.

    - Você precisa estar logado com uma conta que tenha poderes administrativos na máquina remota... ou então com uma conta local que tenha o mesmo nome de usuário e a mesma senha de um usuário com poderes administrativos na máquina remota (um administrador local normalmente resolve, uma vez que é comum várias máquinas usarem a mesma senha de admin local).

    - Tome cuidado com firewalls. Eles precisam estar programados para liberar tráfego do WMI. Isso inclui o firewall do XP, que bloqueia por padrão. No ScriptCenter tem artigos que explicam como fazer isso.

    - com Powershell, aquele For pode ser substituido por
    cat micros.txt | foreach {cscript alteradm.vbs $_}

    Aguardem... o powershell vai mudar a forma como a gente cria scripts hoje.


    []s,

    Vinicius Canto
    MVP Visual Developer - Scripting  
    quarta-feira, 1 de novembro de 2006 14:18
    Moderador
  • Como faço para manipular informações no AD via script. Ex. Alterar Telefone ou Excluir usuário
    terça-feira, 16 de janeiro de 2007 14:54
  • Um exemplo de utilização desta técnica em um script que acessa o AD.

    Script para listar membro de um grupo mas para varios grupos ao mesmo tempo 

    social.technet.microsoft.com/Forums/pt-BR/scriptadminpt/thread/b3f6f9c7-de29-4d73-8b4b-d61ed67f3000


    Fábio de Paula Junior

    terça-feira, 17 de julho de 2012 02:52
    Moderador