Usuário com melhor resposta
Executar Scripts simultaneamente

Pergunta
-
Senhores,
eu tenho um script que deve ser executado em muitas máquinas no meu Diretório (em torno de 1400 delas).
Assim, preciso que este script seja executado simultaneamente para várias destas máquinas.
Elas estarão todas já ligadas e sem usuários, e o procedimento será executado em contra-turno. Então scripts de logon infelizmente não são uma opção.
Existe alguma forma de executar várias 'threads' ou algum outro tipo de execução simultânea?
o código é:
psexec.exe \\NOMEDEHOST -u NOMEDEHOST\USER -p SENHA \\SERVER\script.bat
A ideía é de executar como se eu tivesse X scripts desses e rodasse todos ao mesmo tempo. Mas claro, preciso fazer isso de forma automatizada.
Meu servidor é Windows Server 2003, as estações todas Windows XP.
Como faço isso?
Obrigado.
Vinicius Brenny
Respostas
-
Olá,
Não é a propriedade do whshell.run ???
Dá uma olhada na sintaxe:
object.Run(strCommand, [intWindowStyle], [bWaitOnReturn])
Onde:
strCommand = Comando
intWindowStyle = Se irá abrir maximizado, minimizado....
bWaitOnReturn = Se irá aguardar o termino da ação para continuar o script.
No seu caso seria:
WshShell.Run ("psexec.exe \\" & nome &" -u "& nome &"\" & usuario & " -p " & senha & " \\SERVER\script.bat",0,false)
Apesar de o default ser false.
Qualquer dúvida, segue o link:
http://msdn.microsoft.com/en-us/library/d5fk67ky(VS.85).aspx
Até mais,
Jesiel
Obs.: Se útil, classifique- Marcado como Resposta Fábio JrModerator terça-feira, 20 de março de 2012 15:38
Todas as Respostas
-
Olá,
Tente criar um arquivo do excel e usar o script abaixo:
Set objExcel = CreateObject("Excel.Application")
'caminho do arquivo excel
Set objWorkbook = objExcel.Workbooks.Open ("C:\computadores.xls")
intRow = 1
Do Until objExcel.Cells(intRow,1).Value = ""
nome= objExcel.Cells(intRow, 1).Value
usuario= objExcel.Cells(intRow, 2).Value
senha=objExcel.Cells(intRow,3).Value
executaps
intRow = intRow + 1
Loop
objExcel.Quit
Sub executaps
On Error Resume Next
Set WshShell=CreateObject("Wscript.Shell")
WshShell.Run "psexec.exe \\" & nome &" -u "& nome &"\" & usuario & " -p " & senha & " \\SERVER\script.bat"
End sub
Faça os testes e poste os resultados.
Até mais,
Jesiel
Obs.: Se útil, classifique -
Jesiel,
primeiramente, obrigado pela resposta.
Mas o que o seu script faz, se entendi bem, é substituir as variáveis da linha de comando e executar elas em loop, certo?
Só que o que eu preciso não é que sejam executadas em loop, mas todas simultaneamente.
Eu já tenho as variáveis todas sendo ajustadas, e funciona ok. Mas ele executa em loop - ou seja, executa com variáveis da seqüência 1, depois que terminar executa tudo com a seqüência 2, e assim por diante.
Mas preciso que seja tudo executado simultaneamente.
Alguma idéia de como fazer isto?
Vinicius Brenny -
Olá,
Não é a propriedade do whshell.run ???
Dá uma olhada na sintaxe:
object.Run(strCommand, [intWindowStyle], [bWaitOnReturn])
Onde:
strCommand = Comando
intWindowStyle = Se irá abrir maximizado, minimizado....
bWaitOnReturn = Se irá aguardar o termino da ação para continuar o script.
No seu caso seria:
WshShell.Run ("psexec.exe \\" & nome &" -u "& nome &"\" & usuario & " -p " & senha & " \\SERVER\script.bat",0,false)
Apesar de o default ser false.
Qualquer dúvida, segue o link:
http://msdn.microsoft.com/en-us/library/d5fk67ky(VS.85).aspx
Até mais,
Jesiel
Obs.: Se útil, classifique- Marcado como Resposta Fábio JrModerator terça-feira, 20 de março de 2012 15:38