Capturando a saída do WshShell.Exec usando o Windows Script Host

Escrevi as duas funções a seguir e chamo a segunda ("callAndWait") do JavaScript em execução no Windows Script Host. Minha intenção geral é chamar um programa de linha de comando de outro. Ou seja, estou executando o script inicial usando cscript e depois tentando executar outra coisa (Ant) desse script.

function readAllFromAny(oExec)
{
     if (!oExec.StdOut.AtEndOfStream)
          return oExec.StdOut.ReadLine();

     if (!oExec.StdErr.AtEndOfStream)
          return "STDERR: " + oExec.StdErr.ReadLine();

     return -1;
}

// Execute a command line function....
function callAndWait(execStr) {
 var oExec = WshShell.Exec(execStr);
  while (oExec.Status == 0)
 {
  WScript.Sleep(100);
  var output;
  while ( (output = readAllFromAny(oExec)) != -1) {
   WScript.StdOut.WriteLine(output);
  }
 }

}

Infelizmente, quando executo meu programa, não recebo feedback imediato sobre o que o programa chamado está fazendo. Em vez disso, a saída parece entrar e sair, às vezes aguardando até que o programa original termine, e às vezes parece ter um impasse. O que realmente quero fazer é que o processo gerado compartilhe o mesmo StdOut do processo de chamada, mas não vejo uma maneira de fazer isso. Apenas definir oExec.StdOut = WScript.StdOut não funciona.

Existe uma maneira alternativa de gerar processos que compartilhem o StdOut & StdErr do processo de inicialização? Tentei usar o "WshShell.Run (), mas isso gera um erro de" permissão negada ", o que é problemático, porque não quero que meus clientes digam para alterar a configuração do ambiente Windows apenas para executar o meu programa.

O que eu posso fazer?

questionAnswers(5)

yourAnswerToTheQuestion