Inquiridor
3 Scripts pelo preço de 1

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)
1º 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...
2º 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?
3º 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
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 -
-
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