Я пытаюсь запустить командный файл в удаленной системе и получить выходные данные локально (командный файл запускает сценарий служб SSIS, который имеет несколько выходных данных). Я могу заставить удаленный файл работать нормально, но я не получаю вывод от него на локальной машине.
Мой код (обратите внимание, я пытался "ipconfig / all" просто как тест):
public RunRemoteProcess() {
_process = new Process();
_process.StartInfo = new ProcessStartInfo
{
UseShellExecute = false,
RedirectStandardOutput = true,
RedirectStandardError = true,
CreateNoWindow = true,
FileName = string.Concat(AppDomain.CurrentDomain.BaseDirectory, @"Resources\psexec.exe"),
Arguments = "\\remotePCName ipconfig /all"
};
_process.OutputDataReceived += OutputDataHandler;
_process.ErrorDataReceived += ErrorDataHandler;
_process.Start();
_process.BeginOutputReadLine();
_process.BeginErrorReadLine();
}
// _logger below is just a class that writes the data to a file
private void OutputDataHandler(object sender, DataReceivedEventArgs e) {
_logger.Info(e.Data);
}
private void ErrorDataHandler(object sender, DataReceivedEventArgs e) {
_logger.Info(e.Data);
}
Я нашел более SO вопросов / ответов, в которых упоминается использование WaitForExit
, но я не хочу писать весь вывод, когда он закончится;Я хочу транслировать его по мере его поступления.
Я также пытался добавить RedirectStandardInput = true
в ProcessStartInfo (поскольку некоторые ответы говорили, что это сработало), но это ничего не изменило для меня.