Я попытался выполнить файл bat на удаленном сервере, но я могу получить только первый вывод, который печатает файл bat.
d: \ test.bat
@echo off
echo INFO Hello 1!
echo ERROR Goodbye 2!
echo INFO Hello 3!
И код c #:
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.FileName = "d:\\psexec.exe";
startInfo.Arguments = "-u user -p pass \\\\192.168.0.1 -c d:\\test.bat";
startInfo.CreateNoWindow = false;
startInfo.RedirectStandardOutput = true;
startInfo.RedirectStandardError = true;
startInfo.WindowStyle = ProcessWindowStyle.Hidden;
startInfo.UseShellExecute = false;
Process process = new Process();
process.StartInfo = startInfo;
process.OutputDataReceived += CaptureOutput;
process.ErrorDataReceived += CaptureError;
process.Start();
process.BeginOutputReadLine();
process.BeginErrorReadLine();
process.WaitForExit();
} //end method
static void CaptureOutput(object sender, DataReceivedEventArgs e)
{
Console.WriteLine("Output " + e.Data);
}
static void CaptureError(object sender, DataReceivedEventArgs e)
{
Console.WriteLine("ERROR " + e.Data);
}
Выполнение этого кода печатает:
ERROR Connecting to 192.168.0.8...
ERROR
ERROR
ERROR Starting PSEXESVC service on 192.168.0.8...
ERROR
ERROR
ERROR Connecting with PsExec service on 192.168.0.8...
ERROR
ERROR
ERROR Copying \\192.168.0.8\Compartido\Chicon\prueba.bat to 192.168.0.8...
ERROR
ERROR
ERROR Starting \\192.168.0.8\Compartido\Chicon\prueba.bat on 192.168.0.8...
ERROR
ERROR
ERROR
ERROR prueba.bat exited on 192.168.0.8 with error code 0.
ERROR
Output INFO Hello 1!
Output
Но мне нужно, чтобы код печатал:
Output INFO Hello 1!
Output ERROR Goodbye 2!
Output INFO Hello 3!
Важно:Если я выполняю ту же команду в командной строке CMD, все работает нормально.
d:\\psexec.exe -u user -p pass \\\\192.168.0.1 -c d:\\test.bat
Заранее большое спасибо