Problemas com a execução de um processo PsExec a partir do código
Estou com um problema estranho ao tentar executar uma ferramenta de linha de comando .NET remotamente usando o PsExe
Ao executar o PsExec a partir da linha de comando, ele é executado e concluído com perfeiçã
Ao executá-lo em um aplicativo de console (criando um processo, executando o PsExec.exe com os argumentos necessários) - ele está executando O
Ao executá-lo em nossa ferramenta personalizada interna usada para executar tarefas diferentes, ele atinge o tempo limite ou não é concluído com êxit
Aqui está o código que estou usando:
Process p = new Process();
p.StartInfo.FileName = @"C:\PsExec.exe";
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.UseShellExecute = false;
p.StartInfo.CreateNoWindow = true;
string arg = "-snapshot -display C:\*.msi -s";
p.StartInfo.Arguments = @"\\10.161.203.106 -u user -p pwd -cf C:\FVT.exe " + arg;
Logger.Info(this, "Starting process");
p.Start();
var ended = p.WaitForExit(60 * 1000);
if (!ended)
{
throw new Exception("Process timed out.");
}
Logger.Info(this, "Process ended");
using (StreamReader sr = p.StandardOutput)
{
string buffer = sr.ReadToEnd();
Logger.Info(this, buffer);
}
Este código funciona bem a partir da linha cmd ou de um aplicativo independente!
Não tenho idéia do que mais poderia estar errado aqu
Nossa ferramenta interna gera um novo thread e executa esse código nel
Atualizar
linha de comando + args na janela da linha de comando - funcionando. Mesmo cmd + args, executado como um Processo com RedirectOutput - paralisa e retorna no tempo limit
Isso pode ser um bug no .NET? (isso acontece com outros programas, arquivos em lote, etc.