Как транслировать удаленный вывод из процесса psexec - PullRequest
1 голос
/ 08 ноября 2019

Я пытаюсь запустить командный файл в удаленной системе и получить выходные данные локально (командный файл запускает сценарий служб 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 (поскольку некоторые ответы говорили, что это сработало), но это ничего не изменило для меня.

...