none
Script para Alterar o nome da estacao baseado em uma lista RRS feed

  • Pergunta

  • Pessoal,

    Primeiramente inicio esta Thread me desculpando por que sou totalmente leigo em Scripts e por isso estou recorrendo a voces. Eu tenho um desafio aqui na empresa que e trocar o nome de todas as estacoes de trabalho.

    Eu tentei fazer conforme este post http://social.technet.microsoft.com/forums/pt-br/scriptadminpt/thread/F7999BE7-8160-4273-8093-B2F373E69227 porem nao obtive sucesso

    Eu tenho uma lista com o nome da estacao atual e o nome que ela devera receber. A logica e simples, o script precisa ler esta lista e, uma vez que ele encontrar o nome na coluna A (nome antigo) ele altera o nome da estacao para o nome que esta na coluna B.

    Esta minha lista eh um TXT separado por ponto e virgule. Como eu disse a logica eh facil, eu so nao tenho ideia de como transformer isso num script. Alguem pode m ajudar?

    Obrigado

    domingo, 9 de setembro de 2012 10:36

Respostas

  • Oi Fábio,

    Obrigado pela ajuda, mas não funcionou. Eu acredito que esteja faltando algo no script VBS. Ele termina mesmo em um "NEXT"?

    A resposta que eu obtenho é:

    "c:\Renomeia.bat
    ENCONTROU
    RENOMEANDO velhonome
    Microsoft (R) Windows Script Host Versão 5.6
    Copyright (C) 1996-2001 Microsoft Corporation. Todos os direitos reservados.

    objComputer.Rename(UCASE(WSCRIPT.ARGUMENTS(0)))"

    Engraçado é que eu não consigo nem ver o NEXT aqui na tela do Fórum.... eu só percebi ele quando eu copio tudo. Será que a exibição do script não veio completa?

    Pode me dar mais uma força?

    • Marcado como Resposta LLazzerini quarta-feira, 12 de setembro de 2012 14:15
    terça-feira, 11 de setembro de 2012 11:55
  • Desculpa, eu havia alterado a linha pra não rodar na minha máquina

    troque

    WSCRIPT.ECHO "objComputer.Rename(UCASE(WSCRIPT.ARGUMENTS(0)))"

    por

    objComputer.Rename(UCASE(WSCRIPT.ARGUMENTS(0)))


    Fábio de Paula Junior

    • Marcado como Resposta LLazzerini quarta-feira, 12 de setembro de 2012 14:15
    terça-feira, 11 de setembro de 2012 18:16
    Moderador

Todas as Respostas

  • Daniel,

    Vc vai precisar de 3 arquivos (todos na mesma pasta):

    1) Renomeia.bat

    @ECHO OFF
    
    FINDSTR /I "%COMPUTERNAME%" lista.txt > %TEMP%\MUDA_NOME.TXT
    IF %ERRORLEVEL% EQU 0 (
    	ECHO ENCONTROU
    	FOR /F "tokens=2 delims=;" %%N IN (%TEMP%\MUDA_NOME.TXT) DO SET NOVO_NOME=%%N
    
    
    ) ELSE (
    	ECHO NAO ENCONTRADO.
    	GOTO :EOF
    )
    
    
    ::RENOMEIA ESTACAO
    :: http://support.microsoft.com/kb/298593
    ECHO RENOMEANDO %NOVO_NOME%
    CSCRIPT RENOMEIA.VBS %NOVO_NOME%

    2)Renomeia.vbs

    StrComputer = "."
    Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    Set colComputers = objWMIService.ExecQuery("Select * from Win32_ComputerSystem")
    For Each objComputer in colComputers
    	objComputer.Rename(UCASE(WSCRIPT.ARGUMENTS(0)))
    Next

    3)Lista.txt , este contém a relação NomeVelho  e Nome Novo

    AAAvelho;AAANOVO
    dddvelho;dddNOVO
    BBBvelho;BBBNOVO

    Execute o renomeia.bat, ele vai procurar dentro do lista.txt o nome da estação onde ele está sendo executado, se encontrar ele executa o Renomeia.VBS


    Fábio de Paula Junior


    segunda-feira, 10 de setembro de 2012 20:08
    Moderador
  • Oi Fábio,

    Obrigado pela ajuda, mas não funcionou. Eu acredito que esteja faltando algo no script VBS. Ele termina mesmo em um "NEXT"?

    A resposta que eu obtenho é:

    "c:\Renomeia.bat
    ENCONTROU
    RENOMEANDO velhonome
    Microsoft (R) Windows Script Host Versão 5.6
    Copyright (C) 1996-2001 Microsoft Corporation. Todos os direitos reservados.

    objComputer.Rename(UCASE(WSCRIPT.ARGUMENTS(0)))"

    Engraçado é que eu não consigo nem ver o NEXT aqui na tela do Fórum.... eu só percebi ele quando eu copio tudo. Será que a exibição do script não veio completa?

    Pode me dar mais uma força?

    • Marcado como Resposta LLazzerini quarta-feira, 12 de setembro de 2012 14:15
    terça-feira, 11 de setembro de 2012 11:55
  • Desculpa, eu havia alterado a linha pra não rodar na minha máquina

    troque

    WSCRIPT.ECHO "objComputer.Rename(UCASE(WSCRIPT.ARGUMENTS(0)))"

    por

    objComputer.Rename(UCASE(WSCRIPT.ARGUMENTS(0)))


    Fábio de Paula Junior

    • Marcado como Resposta LLazzerini quarta-feira, 12 de setembro de 2012 14:15
    terça-feira, 11 de setembro de 2012 18:16
    Moderador
  • Legallllll

    Agora funcionou porém, somente quando eu executo ele direto da estação. Se eu colocar em uma GPO ele não funciona. eu editei o script com os caminhos de rede para que fosse possível se chegar até o script. Eu vejo ele sendo executado porém ele não renomeia.

    Se eu chamar \\servidor\renomeia.bat funciona perfeitamente, mas não consigo automatizar essa chamada por script. Cheguei a fazer uma VBS pra chamar o BAT pra testar.... mas mesmo assim não funciona.

    Já me ajudou muito, mas tem noção do que pode ser isso?

    quarta-feira, 12 de setembro de 2012 14:15
  • Sugestão:

    Pode ser que durante o processamento da GPO vc não tenha acesso ao local onde está o VBS. Vc poderia criar ele na máquinas, dentro do .bat faça ECHOs para dentro de um arquivo .VBS local na estação assim:

    echo StrComputer = "." > %temp%\renomeia.vbs
    echo Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") >> %temp%\renomeia.vbs
    echo Set colComputers = objWMIService.ExecQuery("Select * from Win32_ComputerSystem") >> %temp%\renomeia.vbs
    echo For Each objComputer in colComputers >> %temp%\renomeia.vbs
    echo    objComputer.Rename(UCASE(WSCRIPT.ARGUMENTS(0)))  >> %temp%\renomeia.vbs
    echo Next  >> %temp%\renomeia.vbs

    Veja que a primeira linha é com > (cria) e as demais com >>(adiciona).

    ao final execute o cscript  %temp%\renomeia.vbs


    Fábio de Paula Junior

    quarta-feira, 12 de setembro de 2012 15:56
    Moderador
  • Não funcionou desta forma, mas tua idéia abriu a mente... eu coloquei um script pra copiar os arquivos local e executar a partir de lá. Ai ficou beleza...

    Obrigado

    quinta-feira, 13 de setembro de 2012 19:48