попробуйте добавить -accepteula к своим аргументам в psexec

ытываю странную проблему при попытке запустить инструмент командной строки .NET удаленно, используя PsExec.

При запуске PsExec из командной строки, он запускается и завершается нормально.

При запуске его из консольного приложения (создание процесса, запуск PsExec.exe с необходимыми аргументами) - он работает нормально.

При запуске из нашего собственного пользовательского инструмента, который используется для запуска различных задач, он либо истекает, либо не завершается успешно.

Вот код, который я использую:

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);
}

Этот код работает нормально из строки cmd или из отдельного приложения!

Я понятия не имею, что еще может быть не так здесь.

Наш собственный инструмент порождает новый поток и запускает в нем этот код.

Обновить:

командная строка + аргументы в окне командной строки - работает. То же cmd + args, запускается как Process с RedirectOutput - останавливается и возвращается по таймауту.

Может ли это быть ошибкой в ​​.NET? (это происходит для других программ, командных файлов и т. д.).

Ответы на вопрос(1)

Ваш ответ на вопрос