none
Executar Scripts simultaneamente RRS feed

  • 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
    quarta-feira, 20 de maio de 2009 13:29

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
    quarta-feira, 20 de maio de 2009 14:52

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
    quarta-feira, 20 de maio de 2009 13:44
  • 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
    quarta-feira, 20 de maio de 2009 13:53
  • 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
    quarta-feira, 20 de maio de 2009 14:52