Запустите psExec на c #, используя Process и ProcessStartInfo - PullRequest
0 голосов
/ 24 октября 2018

Я попытался выполнить файл 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

Заранее большое спасибо

...