Como executar programas em outro computador

Olá,

Este post tem um assunto que eu me interesso bastante. Como executar comandos em outro computador?

Uma das primeiras coisas que eu aprendi quando comecei a estudar scripting foi essa... na época, usando somente o Windows Script Host.

Executar um programa remotamente pode servir para várias coisas... desde instalação de software, atualização de antivirus ou mesmo execução de um script que não suporta ser executado remotamente: você copia ele para a outra máquina e faz com que ele seja executado localmente.

Existem várias formas de se fazer isso... e as mais recomendadas, ao menos sob o meu ponto de vista, é a execução remota via WMI e usando o utilitário PSExec (da Sysinternals, freeware). Costumo usar mais a primeira, que existe em todos os computadores com WMI instalado (leia-se W2k ou superior).

O problema de ambos é o mesmo: não dá pra criar processos interativos. Todos rodam sob as credenciais do usuário que roda o script (ou em outra caso seja especificado no script), mas em segundo plano. A saída então é apelar para um truque, postado pelos Scripting Guys na coluna Hey, Scripting Guy: usar tarefas agendadas para fazer isso. Veja o link:

http://www.microsoft.com/technet/scriptcenter/resources/qanda/sept05/hey0906.mspx

Esse post teve origem em uma discussão interessante no fórum do Technet Brasil. Um dos colaboradores no fórum fez uma pergunta, nós do fórum acabamos demorando para responder, ele perguntou novamente e eu interpretei erroneamente que ele estava cobrando a gente... o que não é muito interessante quando se trata de um trabalho voluntário como o nosso. No fim das contas, conheci outro moderador, imagino que tenha resolvido a dúvida dele e aprendemos os dois um pouco mais sobre scripting, WMI e como iniciar processos (e apresentações do PowerPoint) remotamente.

Abraços à todos,

 

Vinicius Canto

Categorias dessa postagem:

Comentários

Carlos Henrique : Vinicius, boa tarde!!!

Gostaria de saber, se é possível, instalar em uma rede, onde todas as máquinas não Win XP, e a rede é Workgroup (sem dominio), se eu consigo instalar impressora remotamente. Ou seja, a partir de uma máquina qualquer, eu entrar em outra máquina do grupo e instalar a impressora nessa máquina, sendo que a impressora estará compartilhada em alguma máquina.

Obrigado,
Carlos Henrique
ch_neves@hotmail.com [22/5/07 17:25 - link]

Vinicius Canto : Olá, pode sim. A saída é atribuir os scripts padrão (que você encontra na net facilmente) pra ser executados durante o logon do usuário, e não durante o startup. Isso acontece porque o mapeamento de impressoras é relativo ao usuário logado, e não ao computador em si.

[]s,

Vinicius Canto [4/6/07 09:17 - link]

Anônimo : olá Carlos antes de tudo quero parabenizá-lo pelo blog pois tem muitos tópico interessantes, mas a minha duvida é a seguinte:
eu trabalho em laboratório com 15 pcs e um grupo de trabalho X definido, gostaria de saber como faço para executar alguns programas via arquivo em lotes que executaria nos pcs da rede coisas do tipo calculadora e notepad e além disso eu criaria uma pasta com coisas que eu possa executá-las (principalmente jogos educativos) pois trabalho isso com crianças de 1ª a 4ª série.
a minha lógica inicial era o seguinte comando:
START \\MICRO_X C:\JOGOS\JOGO_EDUCATIVO_X
este comando faria executar um prog no micro x.

Agradeço a atenção

Gustavo

gusto_valenga@hotmail.com [1/8/07 22:17 - link]

Vinicius Canto : Olá

esse post fala exatamente disso. Eu apresentei formas para criar processos (leia-se abrir programas) em computadores remotos.

Uma dica mais rápida para você é usar o PSexec. Ele serve exatamente pra isso.

Abraço,


Vinicius Canto
MVP Windows Server - Admin Frameworks [10/8/07 13:47 - link]

Anônimo : Vinicius, queria executar um programa em outro computador, mais quando eu uso Psexec, aparece ACESSO NEGADO... você poderia me explicar como liberar esse acesso?
muito obrigado! [28/9/07 19:23 - link]

Vinicius Canto : Você já verificou se possui direitos administrativos no outro computador?

[]s,

Vinicius [28/10/07 10:19 - link]

Diego : Olá, no meu caso ocorreu a mesma coisa, tanto entrando no prompr remoto, como mandando ele executar diretamente, retorna ACESSO NEGADO, sendo que estou executando do domínio para uma máquina que possui direitos administrativos.
Pode me ajudar? [29/4/08 14:43 - link]

Vinicius Canto : Existe algum firewall no meio do caminho? Os serviços padrão do Windows estão habilitados? [30/4/08 14:27 - link]

Diego : Firewall do windows desabilitado e serviços Ok.
Fiz um teste rodando do client para o server, ele não tá mensagem alguma, fica apenas com o cursor piscando como se estivesse executando, mas na verdade não está executando nada. [30/4/08 14:40 - link]

Diego : PsExec could not start \\172.22.22.1\user\m.vbs on gwi27:
Acesso Negado

Sendo que tenho acesso a pasta, possuo direitos administrativos, iniciei todos os serviços possiveis e estou com o firewal do Windows desativado. [30/4/08 15:17 - link]

Vinicius Canto : Olá Diego,

Qual é o comando que você está executando? Você está em um domínio?


[]s,

Vinicius Canto [17/5/08 12:40 - link]

jaelson wagner : Boa Tarde Vinícius

Poderia me ajudar com uma dúvida?

Estou tentando executar uma tarefa em um host remoto. Sei fazer tal tarefa colocando o script no servidor e forçando a execução quando o usuário logar no domínio, porém queria saber se é possível fazer isto de outra forma.

Estou tentando executar o seguinte script:

On Error Resume Next

Const wbemFlagReturnImmediately = &h10
Const wbemFlagForwardOnly = &h20

strcomputer = "hostaddress@domínio"
strSOVersion = ""

Set objWMIService = GetObject("winmgmts://" & strComputer & "\root\CIMV2")
Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_OperatingSystem", "WQL", _
wbemFlagReturnImmediately + wbemFlagForwardOnly)

Set objShell = CreateObject("Wscript.Shell")

For Each objItem In colItems
WScript.Echo "Caption: " & objItem.Caption
strSOVersion = objItem.Caption
Next


Select Case strSOVersion

Case "Microsoft Windows XP Professional"
WScript.Echo "Caption: " & strSOVersion
''objShell.Run "calc.exe"

Case "Microsoft Windows 2000"
WScript.Echo "Caption: " & strSOVersion

End Select


É possível isto? O problema seria um usuário e senha com permissão?

Já tentei usuário e senha mas não sei onde exatamente colocar estes params.

Obrigado. [17/6/08 15:43 - link]

Anônimo : Boa Noite!!!

Você poderia tirar uma duvida?
Trabalho em uma empresa de usinagem cnc , existe 16 maquinas cnc, no painel da maquina tem o windows instalado,e placa de rede, etc. utilizamos um software para fazer a programação das peças na maquinas , mas temos apenas um software com licença , então é necessario gravar o arquivo no pen drive ou disquete para para abrirmos o arquivo feito no pc que tem o software com licença instalado para gerarmos o programa e depois gravarmos novamente no pen drive para salvarmos na maquina. isso da muito trabalho...
Gostaria de saber se é possivel criar uma rede de computadores com as 16 maquinas deixando como servidor o PC onde esta instalado o software com licença para execurtarmos o programa e gerarmos os arquivos sem precisar sair da maquina onde estamos. e copiar desenhos, outros arquivos que estarão no pc servidor para as maquinas?/ isso é possivel??

Obrigado!!!!
luantperez@ig.com.br [4/7/08 19:30 - link]

Diego : Vinicius, e no caso de eu precisar mapear impressoras emergencialmente, eu consigo executar o script remotamente mas com as credenciais do usuário logado, e não com as credenciais do sistema? [20/7/09 16:12 - link]

lαkє : Olá Vinícius tudo bom? parabens pelo blog aqui.
To precisando de ajuda.. queria fazer um link em html pra quando a pessoa acessar meu site e clicar nele ele abrir o bloco de notas do pc dela.

como eu faço isso? detalhe: eu nao entendo nada de scripts [1/2/10 01:10 - link]