Executar programas em outros computadores com uma linha

Olá,

continuando a meus posts sobre one-liners, segue agora meu comando para executar programas em outros computadores. Uma linha só, no Windows Powershell:

"webserver","isaserver","sqlserver" | % {([wmiClass]"\\$_\ROOT\CIMV2:win32_process").Create("\\appserver\share\update.exe")}

Note que, embora o meu site tenha quebrado a linha em duas, você pode digitar isso em uma só.

No comando acima, eu usei um dos inúmeros aliases do Powershell: o %. % no Powershell é um alias pro commandlet foreach-object. Já usei ele várias vezes no blog, e ele serve para executar um dado bloco de comandos (aquilo que está entre as chaves) para cada um dos ítens que ele recebe pelo pipe. Além disso, em cada execução do bloco, ele substitui a variável $_ pelo ítem atual. É como um for ou foreach em qualquer linguagem de programação.

Caso queira colocar a lista de máquinas em um arquivo .TXT, basta criar um arquivo chamado lista.txt com os nomes ou IPs das máquinas (uma por linha) e usar o comando abaixo:

cat lista.txt | % {([wmiClass]"\\$_\ROOT\CIMV2:win32_process").Create("\\appserver\share\update.exe")}

Até mais!

Categorias dessa postagem: ,

Comentários

Anônimo : Olá Vinicius, bem que vc poderia criar um post falando sobre o wmi, bem basicão mesmo para os leigos (como eu) entenderem como é e como funciona. [16/8/07 10:20 - link]

Vinicius Canto : Tá anotado o recado! Mais pra frente eu publico uma introdução sobre o assunto!

Obrigado!

Vinicius [18/8/07 10:08 - link]

Gabriel : Bom dia!

Tentei fazer um teste e tive esse retorno, pode me ajudar?

cat Desktop/lista.txt | % {([wmiClass]"\\$_\ROOT\CIMV2:win32_process").Create("\\xx.x.x.xx\l\AA_v3.1.exe")}

E ele retornou o seguinte erro:
Não é possível converter o valor "\\xx.x.x.xx\ROOT\CIMV2:win32_process" para o tipo "System.Management.ManagementClass". Erro: "O servidor RPC não está disponível. (Exceção de HRESULT: 0x800706BA)" [5/4/16 11:53 - link]